如何通过新列标注 A 列和 B 列之间是不是匹配
Posted
技术标签:
【中文标题】如何通过新列标注 A 列和 B 列之间是不是匹配【英文标题】:How to notate if there is matching between column A and column B via a new column如何通过新列标注 A 列和 B 列之间是否匹配 【发布时间】:2020-07-01 19:39:54 【问题描述】:我的查询结果如下:
ColumnX ColumnY
apple the apple is red
orange orange tree is tall
berry the sky is blue
基本上想创建一个新列,检查是否在表示为“是”或“否”的 ColumnY 中找到 ColumnX 值:
ColumnX ColumnY newColumn
apple the apple is red Yes
orange orange tree is tall Yes
berry the sky is blue No
我尝试过类似的方法:
case
when ColumnX like '%' + ColumnY + '%' then "Yes"
end as newColumn
无济于事。
【问题讨论】:
【参考方案1】:你想要like
操作数反过来。此外,您应该使用单引号而不是双引号来定义字符串文字。
所以:
select
t.*,
case when columnY like '%' + columnX + '%'
then 'Yes'
else 'No'
end newColumn
from mytable t
你也可以使用charindex()
:
case when charindex(columnX, columnY) > 0 then 'Yes' else 'No' end
【讨论】:
【参考方案2】:你可以使用以下
SELECT *, CASE WHEN ColY LIKE CONCAT('%', ColX, '%')
THEN 'Yes'
ELSE 'No'
END NewColumnUsingLike,
CASE WHEN PATINDEX(CONCAT('%', ColX, '%'), ColY) > 0
THEN 'Yes'
ELSE 'No'
END NewColumnUsingPatIndex,
CASE WHEN CHARINDEX(ColX, ColY) > 0
THEN 'Yes'
ELSE 'No'
END NewColumnUsingCharIndex
FROM
(
VALUES
('apple', 'the apple is red'),
('orange', 'orange tree is tall'),
('berry', 'the sky is blue')
) T(ColX, ColY);
Online Demo
【讨论】:
以上是关于如何通过新列标注 A 列和 B 列之间是不是匹配的主要内容,如果未能解决你的问题,请参考以下文章