为什么我的 T-SQL 查询中的这个 CASE 语句不能正常工作?

Why is this CASE statement in my T-SQL query not working properly?

我是 运行 SSMS 中的以下 T-SQL 代码,但我没有得到关于查询中最后一列的预期结果:

 SELECT *, 
           (CASE WHEN Description like '%AI% '
                 THEN 'AI'
                   ELSE 'OTHER'
                     END) as 'Meal Plan'
 FROM TestTable

TestTable 中的 'Description' 列是 nvarchar 列。该列中的值示例为 'STD AI REVENUE'.

从上面的查询中,如果 Description 列中的对应值为 'STD AI REVENUE',我预计 'Meal Plan' 列的值为 'AI'。但是,我的查询是用 'OTHER' 填充整个 'Meal Plan' 列。

感谢您的帮助!

尝试

CASE WHEN Description like  N'%AI% '

这是您当前的逻辑:

CASE WHEN Description like '%AI% '

这将匹配 space 中 ending 的描述。您可能打算这样做:

CASE WHEN Description like '%AI%'

这是一个演示,展示了您的查询背后的逻辑和我建议的更正:

Rextester

您的条件应该看起来像'%AI %',而不是'%AI%'(注意space在哪里), 正如上面提到的,你应该使用 unicode 搜索字符串和 unicode 字段,即使在你的特定情况下它并不重要