2012-05-23 4 views
1

Как это сделать в Oracle Query? это говорит о том, что мы хотим, чтобы записи, имеющие «1» в самой левой позиции в этом столбце.Как сделать простую подстроку в Oracle


AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1' 
+0

должен был сказать, что orig находится в sql-сервере. –

ответ

4

convert function функция преобразует строку из одного набора символов в другую. Синтаксис: convert(<string>, <to character set>, <from character set>)

Также substring не является функцией Oracle, это substr.

Если вам не нужно преобразовывать строку, то and substr(tr.menu_id_value,1,1) доставит вам самый левый символ.

Если вы хотите конвертировать набор символов, то полный список - available in the documentation, в качестве альтернативы вы можете задать вопрос v$nls_valid_values. Например, если вы конвертируете из WE8MSWIN1252 (Windows code-page 1252) в AL32UTF8 (UTF-8), то ваше состояние станет:

and substr(convert(tr.menu_id_value,'AL32UTF8','WE8MSWIN1252'),1,1) = '1' 

От вашего комментария я предполагаю, что convert() функция SQL-сервер для преобразования между типами данных , В этом случае эквивалент Oracle будет равен to_char. Хотя Oracle неявно делает преобразование, всегда лучше всего использовать to_char и конвертировать явно; давая вам:

and substr(to_char(tr.menu_id_value),1,1) = '1' 

Случайно точный Oracle эквивалент cast(). Строго говоря, to_char() следует использовать, если вы хотите использовать format model, таким образом substr(cast tr.menu_id_value as varchar2(10)),1,1) также даст вам то, что вы после вступления в длину в tr.menu_id_value была меньше или равна 10.

1

Использование SUBSTR

AND substr(tr.menu_id_value,1,1) = '1' 
Смежные вопросы