カラムAとカラムAA

または、カラムBとカラムBB
または、カラムCとカラムCC これらを比較して
どちらか一致しないものが見つかったら1とするという
case when文を書きたいです。

ただ、それぞれのカラムNullを含む可能性があるので、
単純に比較するとエラーになりますので、
以下のようにしました。(カラムCとカラムCCは数値フィールドです)
, CASE
WHEN NVL(カラムA, '123') != NVL(カラムAA, '123')
OR NVL(カラムB, '123') != NVL(カラムBB, '123')
OR NVL(カラムC, '123') != NVL(カラムCC, '123')
TEHN 1
ELSE '' END FLG

この場合、123が絡むに入っていないこと前提で、
事実123が運用で入ることは考えられませんが、
スマートでないので別案を考えていますが、
良案を教えてほしいです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/01/11 00:51:16
  • 終了:2013/01/15 01:48:32

ベストアンサー

id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202013/01/11 07:23:50

ポイント34pt

カラムの内容がNULL同士だった場合にはTRUEを返したいという要件のようですから、やり方は合っています。
一般的には次のようにします。chr(0)の方がデータとして有り得ない値なので。

CASE
  WHEN NVL(カラムA, chr(0)) != NVL(カラムAA, chr(0))
    OR NVL(カラムB, chr(0)) != NVL(カラムBB, chr(0))
    OR NVL(カラムC, chr(0)) != NVL(カラムCC, chr(0))
  TEHN 1
ELSE '' END FLG
id:yayayai

いつもありがとうございますっ!

2013/01/15 01:46:26

その他の回答(2件)

id:taknt No.1

きゃづみぃ回答回数13538ベストアンサー獲得回数11982013/01/11 05:44:09

ポイント33pt

未確認ですが 普通に 全一致の not をとればよいかと思います。

not (
カラムA = カラムAA and
カラムB = カラムBB and
カラムC = カラムCC )

お互いが Nullの場合も 一致すると 判断してよいのですか?

ま、Nullで 一致と みなされるかどうかは 確認してみないと わかりませんが。

あと Nullと 何も入ってないのは 区別しますか?

他1件のコメントを見る
id:taknt

ま、質問にあるように NVLを用いて 記述するしかないと思いますが
!= で or するより = で ANDをとって Notのほうが スマートだとは 思います。

スマートとは 検証しやすい、確認しやすいということです。

2013/01/11 05:53:46
id:yayayai

なるほど。。!= or より AND で NOT ですね。
ありがとうございましたっ!!

2013/01/15 01:45:57
id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202013/01/11 07:23:50ここでベストアンサー

ポイント34pt

カラムの内容がNULL同士だった場合にはTRUEを返したいという要件のようですから、やり方は合っています。
一般的には次のようにします。chr(0)の方がデータとして有り得ない値なので。

CASE
  WHEN NVL(カラムA, chr(0)) != NVL(カラムAA, chr(0))
    OR NVL(カラムB, chr(0)) != NVL(カラムBB, chr(0))
    OR NVL(カラムC, chr(0)) != NVL(カラムCC, chr(0))
  TEHN 1
ELSE '' END FLG
id:yayayai

いつもありがとうございますっ!

2013/01/15 01:46:26
id:taroe No.3

taroe回答回数1099ベストアンサー獲得回数1322013/01/11 10:02:39

ポイント33pt
  WHEN NVL(カラムA, '') != NVL(カラムAA, '')
    OR NVL(カラムB, '') != NVL(カラムBB, '')
    OR NVL(カラムC, '') != NVL(カラムCC, '')

多くの人はこういう感じで書くかも。
空文字で問題ないはずですから。

id:yayayai

なるほど。そうなんですね。ありがとうございますっ!!

2013/01/15 01:47:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません