0
 select 1 where somevalue = '' or somevalue is null from sometable

私は2つの別々の条件を持たなければならない理由の背後にある理由を完全に理解しています。私の頭を悩ませているのは、何年も経っても、これに対する標準的なショートカット表記がまだない理由です。

さまざまなdbms実装がショートカットを提供しない理由はわかります。ショートカットは必要ないため、そうするとSQLの移植性が大幅に低下しますが、すべてのdbmsでこのようなショートカットが有用であることを考えると、なぜその能力があるのか​​理解できません。これを行うためのショートカットがSQL仕様に追加されていません。

私の質問:実際には正当な理由がありますか?もしそうなら、それは何ですか?

4

3 に答える 3

3

空の文字列NULLであるOracleでの作業に慣れていますが、これは機能しませんか?

SELECT 1 FROM sometable WHERE COALESCE( somevalue, '' ) = ''
于 2012-05-05T04:00:21.413 に答える
2

あなたはただ

select * from table where isnull(columnname,'')=''

または、''の値が気になる場合は、ltrimおよび/またはrtrimを使用します。

于 2012-05-05T04:14:29.450 に答える
0

問題は見当たりません。唯一の奇妙な点は、OracleがNULLを''と同じにする標準に準拠していないことが原因です。

これは非常に簡単です。 coalesce(columnname,'')=''

MS SQL Serverでは、これを使用することもできます。 isnull(columnname,'')=''

ただし、これはMSのみの機能であることに注意してください。

于 2012-05-05T05:48:42.283 に答える