0

我想比较 SQL 表中 2 个不同列的值。

A ---------------- B
10 -------------- 88
20 -------------- 401
30 -------------- 20
40 -------------- 99

我想保持第二列的值等于第一列的值(如 20),但也保留那些包含第一列值的值(如 401,其中包含 40)。

所以在这个例子中,我会看到一个 C 列:

A ---------------- B ----------------- C
10 -------------- 88 ---------------- No
20 -------------- 401 -------------- Yes
30 -------------- 20 ---------------- Yes
40 -------------- 99 ---------------- No

事实上,我可以比较同一行中的字段,但不能将此比较应用于列中的所有字段。

有可能这样做吗?

谢谢

4

1 回答 1

1

您可以使用嵌套selectcase语句来执行此操作。嵌套选择用于like查看是否有任何行满足相似性条件。请注意,like如果值相同以及B列以列开头时,将找到匹配A项:

select t.*,
       (case when exists (select 1 from table t2 where t1.B like concat(t2.A, '%'))
             then 'Yes'
             else 'No'
        end) as C
from table t;

编辑:

如果通过包含,您还想'1401'匹配'40',那么 的模式like应该是:concat('%', t2.A, '%')

于 2014-01-28T17:33:16.647 回答