首页 > 解决方案 > CTE 与 LIKE statemnet 结合

问题描述

我有一个问题。这是我的代码的一部分:

case when ( EXISTS ( SELECT TOP 1 1 FROM CTE WHERE UPPER(s.[Contents Total]) LIKE UPPER('%' + CTE.Contents + '%'))) Then 'depot' ELSE '-' end as Content_Search_XXX

我不知道如何调整这部分LIKE UPPER('%' + CTE.Contents + '%')。因为当在列Contents Total中找到类似这样的内容时:

仓库服务 2018 年 8 月

或者

墨西哥服务站取消

然后它工作正常。该查询将仓库记录设置到列Content_Search_XXX中。

但是当“仓库”这个词最后出现时,例如:

2018 年 7 月 XYZ 研究仓库服务

然后查询忽略它,并且没有将仓库记录设置到列Content_Search_XXX中。

请问有没有人可以建议我,并告诉我我做错了什么?

提前谢谢了!:)

标签: sqlsql-server

解决方案


请尝试以下方法:

CASE WHEN
EXISTS (
SELECT TOP 1 1 FROM CTE
WHERE CHARINDEX(TRIM(CTE.Contents), s.[Contents Total] COLLATE Latin1_General_CI_AS) > 0)
THEN 'depot'
ELSE '-'
END
AS Content_Search_XXX

推荐阅读