ORA-01719
[sql]
ORA-01719: outer join operator (+) not allowed in operand of OR or IN
[/sql]
これは知らなかった。外部結合とOR句、もしくはIN句を併用できないらしい。
使いたい場合は条件をバラしてUNIONするしかないのかなぁ。
カナ以外で始まる名前をSELECTするSQL文
仕事でこんな感じの依頼がきたので少し考えてみた。例えば「ア」で始まる名前をSELECTする場合は普通はこう書くだろう。
[sql]
SELECT BOOK.NAME
FROM BOOK
WHERE BOOK.NAME_KANA LIKE 'ア%'
[/sql]
日付比較
SQLのお話。
[sql]
WHERE TO_CHAR(date_column, 'YYYYMMDD') = '20060602'
[/sql]
[sql]
WHERE date_column = TO_DATE('20060602', 'YYYYMMDD')
[/sql]
どちらも結果は同じになるけれど、前者はインデックスが有効にならないなというお話。
MySQL Binary演算子
しゃるる丼定食において2バイト文字比較の動作がどうも怪しいということで少し調査をしてみました。
どうやらBinary演算子とやらをSELECT文で指定すれば文字比較が正確にされるとか。本当はテーブルスキーマの段階でBinary演算子を指定したほうがいいのかな?
こんな感じ。
[sql]
SELECT * FROM TAB1 WHERE COL1 LIKE '%TEST%';
↓
SELECT * FROM TAB1 WHERE COL1 LIKE BINARY '%TEST%';
[/sql]
あんまり良く分かっていないので正しいのかどうかは不明w まぁ懸念していた検索性能は改善されて問題はなさそうです。
