我之前从未发过帖,我通常能够找到答案,所以如果我排除任何内容或格式不正确,请耐心等待。这是我的问题:
我有两列包含类似数据,例如:
Column1 Column2
BASKETBALL BasketBall-CAVS
BASEBALL REDS Baseball-SPORTS
我没有搜索特定的单词,只要在两列中找到的任何单词都应填充第三列下的“否”。所以上述两个记录都应该返回NO。我试过这个:
CASE
WHEN Column1 NOT LIKE
CONCAT('%',Column2,'%') THEN 'Yes'
ELSE 'No'
END AS Needs_Updated;
出于某种原因,只有上图中的第一条记录在“Needs_Updated”列中返回“否”。第二条记录返回“是”(这是不正确的,该列中有两个单词匹配)。第二个记录的唯一区别是第1列中有多个单词。任何人都可以帮助我吗?提前谢谢!
答案 0 :(得分:1)
我认为你可以用正则表达式做你想做的事。并非所有数据库都支持它们,因此这些数据库非常棘手。
使用MySQL语法:
select t.*,
(case when column2 regexp replace(column1, ' ', '|') then 'no' else 'yes' end) as needs_updated
from t;
答案 1 :(得分:1)
你有没有试过Charindex
SELECT CASE WHEN CHARINDEX(Column2,Column1) > 0 ) THEN 'NO' ELSE 'YES' AS Needs_Updated
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ])
start_location是可选的