つまづいた石ころ、ぶつかった壁

問題(と解消)の記録

SQLSERVER IN句に列名をいれる

ある値が複数のカラムのどこかに入っていればOKな
延々とORが続くようなSQLが必要になりました。
ですがとにかくORの連続が気持ち悪いです。

SELECT 
  *
FROM
  USERS
WHERE
  COL_1 = 1 OR COL_2 = 1 OR COL_3 = 1 OR ... OR COL_n = 1


なんとなく閃いてINに列名をつっこんでみたところ、ちゃんと動いてくれました。

SELECT 
  *
FROM
  USERS
WHERE
  1 IN (COL_1, COL_2, COL_3, ... ,COL_n)

なにかとすっきり。
そもそも設計が悪いんですがね。


MSDNはこういってます。