Форум: "Базы";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизSubstr в Oracle Найти похожие ветки
← →
Дмитрий_Б © (2005-11-23 16:28) [0]Здравствуйте.
Сервер Oracle, в табличке есть поле varchar2, содержащее такие данные:
45
55
25-78
89
мне нужно получить следующее
45
55
78
89
т.е. если в строке есть символ "-" то нужно получить строку после него, иначе взять строку полностью.
При использовании substr(fieldname, -1, 2) получаю:
5
5
8
9
причем в качестве третьего параметра ставил 1, 2, 3,... не меняется ничего.
Подскажите пож-та. Заранее спасибо
← →
Val © (2005-11-23 16:38) [1]select substr("25-78",-2,2) from dual.
но для решения данной задачи нужно искать позицию "-" еще.
← →
Дмитрий_Б © (2005-11-23 16:49) [2]Спасибо, правильно. Дальше я разберусь. Кстати, с какой позиции (в случае отрицательного второго параметра) происходит поиск ? Знаю только что с конца строки. Справочника к сожалению нет рядом.
← →
dioman © (2005-11-23 16:51) [3]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) [4]с первого с конца :)
вот и справочник :
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.
← →
dioman © (2005-11-23 16:53) [5]
> Кстати, с какой позиции (в случае отрицательного второго
> параметра) происходит поиск ? Знаю только что с конца строки.
> Справочника к сожалению нет рядом.
instr(str, substr, a,b) возвращает позицию субстроки в строке.(b-тое вхождение) Если а отрицателен то поиск с конца.
← →
Дмитрий_Б © (2005-11-23 16:57) [6]Вот спасибо :)
← →
Reindeer Moss Eater © (2005-11-23 17:25) [7]select decode(instr(ttt,"-"),0,ttt,substr(ttt,1+instr(ttt,"-"),4000)) from mytable
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c