2014-01-16 4 views
0

Я только что нашел этот запрос в скрипте:SubStr в SQL оракул

... WHERE (utl_raw.cast_to_varchar2(dbms_lob.substr(soamsg,2000,1)) LIKE '%BWXX0011%') 
OR (utl_raw.cast_to_varchar2(dbms_lob.substr(soamsg,2000,2001)) LIKE '%BWXX0011%') 

Я на самом деле не использовать для SQL оракула, но я предполагаю, что он должен сделать поиск в soamsg из полукокса 1 до 2000 а затем с 2001 года до 4000. В любом случае, я думал, что шаблон подпрограммы был: (строка, позиция, длина), если это так, в этом запросе есть ошибка?

Я что-то путаю?

+0

Я думаю, что ваш вопрос здесь не принадлежит, но в более сложном фокусе базы данных DBexexchange в конечном итоге – Kiwy

+0

Оракул или нет, довольно очевидно, что вы не найдете 'BWXX0011' в' 123BWXX0011456', если вы разделите его на '123BWXX' и '0011456'. –

ответ

0

Один из способов, чтобы узнать, сигнатура функции является look it up in the documentation:

DBMS_LOB.SUBSTR (
    lob_loc  IN BLOB, 
    amount  IN INTEGER := 32767, 
    offset  IN INTEGER := 1) 
    RETURN RAW; 

DBMS_LOB.SUBSTR (
    lob_loc  IN CLOB CHARACTER SET ANY_CS, 
    amount  IN INTEGER := 32767, 
    offset  IN INTEGER := 1) 
    RETURN VARCHAR2 CHARACTER SET lob_loc%CHARSET; 

DBMS_LOB.SUBSTR (
    file_loc  IN BFILE, 
    amount  IN INTEGER := 32767, 
    offset  IN INTEGER := 1) 
    RETURN RAW; 
  • lob_loc Locator для LOB для чтения. Для получения дополнительной информации см. Операционные заметки.
  • file_loc Локатор файлов для объекта, подлежащего рассмотрению.
  • amount Число байтов (для BLOB) или символов (для CLOB), подлежащих чтению.
  • offset Смещение в байтах (для BLOB) или символов (для CLOB) с начала LOB (начало: 1).

Так что ваше предположение было неправильным.