Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > есть ли аналог SQL'ской ф-ции substring в Oracle?


Автор: s_a_s_h_a 2.5.2006, 15:19
Нужно получить часть содержимого текстового поля. В SQL для этого есть функция substring(str from n to m). А вопрос в том, есть ли аналог этой функции в Oracle и какой синтаксис этого аналога? 

Автор: batigoal 2.5.2006, 15:27
SUBSTR('ABCDEFG',3,4) даст тебе CDEF.
 

Автор: s_a_s_h_a 2.5.2006, 15:37
Спасибо. Это работает с полями типа varchar2, а что делать с полями типа long? 

/*  У меня ошибка: "inconsistent datatypes"   */ 

Автор: batigoal 2.5.2006, 16:16
Ну так ведь понятие "подстрока" применимо только к строкам. Насчет чисел не знаю. Видимо, нужно применять математические операции (округление и пр.) 

Автор: s_a_s_h_a 2.5.2006, 16:22
в этом ... Oracle тип Long используется для хранения больших объемов текста переменной длины. Может быть указана любая длина до 2 Гб.  

Автор: batigoal 2.5.2006, 16:28
Может быть, ты имеешь в виду CLOB? 

Автор: s_a_s_h_a 2.5.2006, 16:39
не smile именно long. В Oracle, по крайней мере в 8-ом, есть 6 символьных типов данных: char, nchar, varchar2, nvarchar2, varchar и long. Мне надо как-то отобразить в небольшом пространстве хотя бы часть тескта, содержащегося в long, а как это сделать не знаю. smile 

Автор: batigoal 2.5.2006, 16:50
Да, точно. Я и не знал.

Добавлено @ 16:50 
В доке, кстати, написано, что
Цитата

Oracle Corporation strongly recommends that you convert LONG columns to LOB columns as soon as possible. Creation of new LONG columns is scheduled for desupport.
 

Автор: LSD 2.5.2006, 22:20
TO_LOB() а дальше работать через DBMS_LOB. 

Автор: s_a_s_h_a 3.5.2006, 15:57
LSD, можете написать как примерно будут выглядеть запросы?

есть таблица my_table, в ней есть поле my_col типа clob. Мне надо запихать результат select-запроса в компонент DBGrid на C Builder'e, который не поддерживает тип clob /*может не совсем так, но в общем вылетает ошибка, когда просто пытаюсь поместить результат следующего запроса в DBGrid: select my_col from my_table*/, но туда можно запихать строку. Собственно вопрос заключается в следующем: какой запрос надо написать, чтобы результатом была строка, точнее часть поля my_col в виде строки?

// если мутно задан вопрос и описана ситуация, то напишите, пожалуйста, об этом, я попытаюсь сформулировать его по-другому. 

Автор: LSD 4.5.2006, 23:16
А может просто перейти на ODAC? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)