プロが教えるわが家の防犯対策術!

データベースのカラムの型がCHAR型の場合で
値にシングルコーテーションつけなくても動作する場合と数値は無効ですとエラーが出る場合があります。

基本的につけるは理解できますがなぜこのようなことが起こるのでしょうか。
考えられる原因を教えていただきたいです。


where column < 10

where column < '10'

A 回答 (3件)

文法的にはエラーであっても、エラーチェックルーチンのバグで通ってしまうことがあります。


それがバージョンアップの際にバグフィックスされると、エラーになるようになったりします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
バージョン自体は上がっておらず、
テーブルを削除して全く同じに作り直したら当該事象が発生しました。

お礼日時:2022/04/25 15:01

Oracleには暗黙の型変換機能があるので、データベースが適切に変換して破綻がおきないようにしてくれます。


https://docs.oracle.com/cd/E16338_01/server.112/ …
で、データベースが変換できない場合はエラーとなります。
一例:
SQL> select * from (select '1' as c1 from dual union select '20' as C1 from dual) where C1>10;
C1
----
20

SQL> select * from (select 'A' as c1 from dual union select '20' as C1 from dual) where C1>10;
select * from (select 'A' as c1 from dual union select '20' as C1 from dual) where C1>10
* ←'A'の位置にマーク。
行1でエラーが発生しました。:
ORA-01722: 数値が無効です。
SQL>
    • good
    • 0
この回答へのお礼

色々とありがとうございました

お礼日時:2022/04/26 15:50

同じDBシステムですか?

    • good
    • 0
この回答へのお礼

同じです。そしたら、以前動作していたところが動かなくなっておりました。

お礼日時:2022/04/25 14:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す