Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1132736589
__DATA__
2005-11-23 12:03
2006.01.22
Как избавиться от DeadLock-a в FireBird 1.5


2-1135758308
Tomkat
2005-12-28 11:25
2006.01.22
модульное приложение


14-1135976124
Kerk
2005-12-30 23:55
2006.01.22
Почитал ветки


2-1136144382
ЭЭЭ
2006-01-01 22:39
2006.01.22
Мастера!!! Копирую файл и всё плохо...


2-1136485227
RDS
2006-01-05 21:20
2006.01.22
Помогите найти ошибку, плиз





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский