Как это сделать в Oracle Query? это говорит о том, что мы хотим, чтобы записи, имеющие «1» в самой левой позиции в этом столбце.Как сделать простую подстроку в Oracle
AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1'
Как это сделать в Oracle Query? это говорит о том, что мы хотим, чтобы записи, имеющие «1» в самой левой позиции в этом столбце.Как сделать простую подстроку в Oracle
AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1'
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.
Использование SUBSTR
AND substr(tr.menu_id_value,1,1) = '1'
должен был сказать, что orig находится в sql-сервере. –