条件の 1 つが である SQL ステートメントを見つけましたcomp_cd > to_char('0000000000','9999999999')
。
実行select to_char('0000000000','9999999999') from dual
すると、結果「0」が得られます。
誰もこれに出くわしましたか?
この関数TO_CHAR
は最初のパラメーターとして NUMBER または DATE を想定していますが、'0000000000'
代わりに文字列 ( ) を指定しています。
したがって、Oracle は暗黙的な変換を使用して、最初に NUMBER に変換します。'0000000000'
に変換され0
ます。
次に、TO_CHARはフォーマット モデル0
を使用して文字列に変換されます。'9999999999'
これにより、次の文字列が生成されます。
' 0'
ついに:
comp_cd > ' 0'
2 つの文字列間で字句 (アルファベット) 比較を行います。