1

OracleQueryでこれを行うにはどうすればよいですか。これは、その列の左端に「1」があるレコードが必要であることを示しています。


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

2 に答える 2

4

convert関数関数は、文字列をある文字セットから別の文字セットに変換します。構文はconvert(<string>, <to character set>, <from character set>)

また、substringOracle関数ではなく、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

于 2012-05-23T18:50:32.510 に答える
1

使用するSUBSTR

AND substr(tr.menu_id_value,1,1) = '1'
于 2012-05-23T18:51:08.373 に答える