プロが教える店舗&オフィスのセキュリティ対策術

SQL serverを使用しています。

ORACLEのDECODEに相当する関数を使用したいのですが、
わからなくて困っています。

具体的には、
特定の行に対して「全角スペース」もしくは「半角スペース」があったときに、nullに置換したい。
(なるべくシンプルな方法で!!)

教えてください。

A 回答 (2件)

No1の補足です。

(ポイントはNo1に振ってください)

>ORACLEのDECODEに相当する関数
といういみであればNo1で使われているCase文になるはずです。Books Onlineに使用方法はあるはずなので。
    • good
    • 0

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と出てきます。あまりコンパクトではありませんが。

※注:上記のなかで「_」は半角空白、「△」は全角空白のかわりです。
    • good
    • 1

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

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