OracleQueryでこれを行うにはどうすればよいですか。これは、その列の左端に「1」があるレコードが必要であることを示しています。
AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1'
OracleQueryでこれを行うにはどうすればよいですか。これは、その列の左端に「1」があるレコードが必要であることを示しています。
AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1'
convert
関数関数は、文字列をある文字セットから別の文字セットに変換します。構文はconvert(<string>, <to character set>, <from character set>)
また、substring
Oracle関数ではなく、substr
です。
文字列を変換する必要がない場合はand substr(tr.menu_id_value,1,1)
、左端の文字が表示されます。
文字セットを変換したい場合は、完全なリストがドキュメントにあります。または、クエリを実行することもできますv$nls_valid_values
。たとえば、WE8MSWIN1252 (Windowsコード-ページ1252)からAL32UTF8 (UTF-8)に変換する場合、条件は次のようになります。
and substr(convert(tr.menu_id_value,'AL32UTF8','WE8MSWIN1252'),1,1) = '1'
あなたのコメントから、それconvert()
はデータ型間で変換するSQL-Server関数だと思います。この場合、Oracleに相当するものはto_char
です。Oracleは暗黙的に変換を行いますが、明示的に使用および変換することが常に最善です。to_char
あなたに与える:
and substr(to_char(tr.menu_id_value),1,1) = '1'
ちなみに、正確なOracleの同等物はcast()
です。厳密に言えば、フォーマットモデルto_char()
を使用する場合は使用する必要があります。したがって、の長さが10以下であると想定した後の結果も得られます。substr(cast tr.menu_id_value as varchar2(10)),1,1)
tr.menu_id_value
使用するSUBSTR
AND substr(tr.menu_id_value,1,1) = '1'