• 締切済み

ORACLEの「DECODE」と同じ意味の関数が知りたい

SQL serverを使用しています。 ORACLEのDECODEに相当する関数を使用したいのですが、 わからなくて困っています。 具体的には、 特定の行に対して「全角スペース」もしくは「半角スペース」があったときに、nullに置換したい。 (なるべくシンプルな方法で!!) 教えてください。

みんなの回答

回答No.2

No1の補足です。(ポイントはNo1に振ってください) >ORACLEのDECODEに相当する関数 といういみであればNo1で使われているCase文になるはずです。Books Onlineに使用方法はあるはずなので。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

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と出てきます。あまりコンパクトではありませんが。 ※注:上記のなかで「_」は半角空白、「△」は全角空白のかわりです。