返回列中是否存在值数组?

时间:2013-08-21 04:32:56

标签: sql-server arrays return exists

假设我有一张桌子:T

Id    Val
==========
1     100
2     200
3     300

我想检查数组中的每个元素,如(400,200,100,700,900)是否存在于上表中,预期结果是:

(0, 1, 1, 0, 0) or (false, true, true, false, false)

知道如何编写select语句吗?

2 个答案:

答案 0 :(得分:1)

你可以做这样的事情

SELECT CASE WHEN t.val IS NULL 
            THEN 0 ELSE 1 END value_exists
  FROM 
(
  SELECT 400 val UNION ALL
  SELECT 200 UNION ALL
  SELECT 100 UNION ALL
  SELECT 700 UNION ALL
  SELECT 900
) a LEFT JOIN Table1 t 
    ON a.val = t.val

输出:

| VALUE_EXISTS |
----------------
|            0 |
|            1 |
|            1 |
|            0 |
|            0 |

这是 SQLFiddle 演示

答案 1 :(得分:0)

你可以说从T WHERE Val = 400或Val = 200等选择*然后将结果映射到数组。映射的是真实的,而不映射的是真的。