![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Substr в Oracle [D7]
Дмитрий_Б © (2005-11-23 16:28:00)Здравствуйте.
Сервер Oracle, в табличке есть поле varchar2, содержащее такие данные:
45
55
25-78
89
мне нужно получить следующее
45
55
78
89
т.е. если в строке есть символ '-' то нужно получить строку после него, иначе взять строку полностью.
При использовании substr(fieldname, -1, 2) получаю:
5
5
8
9
причем в качестве третьего параметра ставил 1, 2, 3,... не меняется ничего.
Подскажите пож-та. Заранее спасибо
Reindeer Moss Eater (2005-11-23 17:25:00) [1]select decode(instr(ttt,'-'),0,ttt,substr(ttt,1+instr(ttt,'-'),4000)) from mytable
Дмитрий_Б (2005-11-23 16:57:00) [2]Вот спасибо :)
dioman (2005-11-23 16:53:00) [3]
> Кстати, с какой позиции (в случае отрицательного второго
> параметра) происходит поиск ? Знаю только что с конца строки.
> Справочника к сожалению нет рядом.
instr(str, substr, a,b) возвращает позицию субстроки в строке.(b-тое вхождение) Если а отрицателен то поиск с конца.
dioman (2005-11-23 16:51:00) [4]select substr(test.q, instr(test.q, '-', -1)+1, length(test.q)-instr(test.q, '-', -1))
from test
test.q - текстовое поле
Val (2005-11-23 16:51:00) [5]с первого с конца :)
вот и справочник :
SUBSTR
SUBSTRB
varchar2 SUBSTR[B](varchar2 char, integer m{, integer n})
Returns a portion of char, beginning at character m, n characters long.
* If m is 0, it is treated as 1.
* If m is positive, Oracle counts from the beginning of char to find the first character.
* If m is negative, Oracle counts backwards from the end of char.
* If n is omitted, Oracle returns all characters to the end of char. If n is less than 1, a null is returned.
Floating-point numbers passed as arguments to SUBSTR are automatically converted to integers.
SUBSTRB are same as SUBSTR, except that the integer arguments expressed in bytes, rather than in characters. For a single-byte database character set, SUBSTRB is equivalent to SUBSTR.
Дмитрий_Б (2005-11-23 16:49:00) [6]Спасибо, правильно. Дальше я разберусь. Кстати, с какой позиции (в случае отрицательного второго параметра) происходит поиск ? Знаю только что с конца строки. Справочника к сожалению нет рядом.
Val (2005-11-23 16:38:00) [7]select substr('25-78',-2,2) from dual.
но для решения данной задачи нужно искать позицию '-' еще.