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

时间:2017-05-09 13:58:52

标签: sql-server tsql case sql-like

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

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

TestTable的“描述”列是nvarchar列。该列中的值的示例将是“STD AI REVENUE”。

从上面的查询中,如果“描述”列中的相应值为“STD AI REVENUE”,我希望“膳食计划”列的值为“AI”。但是,我的查询是用'OTHER'填写整个'膳食计划'列。

感谢您的帮助!

3 个答案:

答案 0 :(得分:7)

这是您当前的逻辑:

for(int i=0;i<A.length;i++)
{
    for(int j=0;j<A.length;j++)
    {
        if(A[i]==B[j])
        {
            count=count+1; //It checks how many times equal elements have been found
                           //ensure to declare and initialize int count=0;
        }
    }
}
if(count>=3)
    System.out.println("true");

这将匹配空格中结尾的描述。你可能打算这样做:

CASE WHEN Description like '%AI% '

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

Rextester

答案 1 :(得分:0)

CASE WHEN Description like  N'%AI% '

答案 2 :(得分:0)

您的情况应该看起来像'%AI%',而不是'%AI%'(注意空格在哪里), 并且如上所述,您应该使用带有unicode字段的 unicode 搜索字符串,即使在您的特定情况下它也无关紧要