- 締切済み
ORACLEの「DECODE」と同じ意味の関数が知りたい
SQL serverを使用しています。 ORACLEのDECODEに相当する関数を使用したいのですが、 わからなくて困っています。 具体的には、 特定の行に対して「全角スペース」もしくは「半角スペース」があったときに、nullに置換したい。 (なるべくシンプルな方法で!!) 教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- khazad-lefty
- ベストアンサー率44% (296/668)
No1の補足です。(ポイントはNo1に振ってください) >ORACLEのDECODEに相当する関数 といういみであればNo1で使われているCase文になるはずです。Books Onlineに使用方法はあるはずなので。
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
SQL Server 2000において CREATE TABLE test ( a VARCHAR(10) ) を作成して INSERT test VALUES("aaa_aaa") INSERT test VALUES("bb△bb") INSERT test VALUES("ccc") としておいて SELECT * FROM test WHERE CHARINDEX('_', a) > 0 を行うと最初の2行が選択されるので、どこかの段階で空白は全角・半角とも同一視するように処理されているようです。(区別するための設定もどこかにあるはずなのですが、ちゃんと探していません。) このとき、 SELECT CASE CHARINDEX('_', a) WHEN 0 THEN a ELSE NULL END FROM test を行うと、最初の2行がNULL、残る1行がそのままcccと出てきます。あまりコンパクトではありませんが。 ※注:上記のなかで「_」は半角空白、「△」は全角空白のかわりです。