Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL 2005我可以在case语句中使用关键字like吗_Sql_Sql Server 2005_Tsql - Fatal编程技术网

SQL 2005我可以在case语句中使用关键字like吗

SQL 2005我可以在case语句中使用关键字like吗,sql,sql-server-2005,tsql,Sql,Sql Server 2005,Tsql,我需要一个允许部分匹配的case语句。我得到一个语法错误,但我想知道是否有类似的可能。如果不是,我的第二个解决方案是作为游标重新写入。。。 例如: 试试这个 SELECT CASE WHEN ColumnName = 'value1' THEN 'answer1' WHEN ColumnName = 'value2' THEN 'answer2' WHEN ColumnName LIKE '%TEST%' THEN 'answe

我需要一个允许部分匹配的case语句。我得到一个语法错误,但我想知道是否有类似的可能。如果不是,我的第二个解决方案是作为游标重新写入。。。 例如:

试试这个

SELECT CASE 
           WHEN ColumnName = 'value1' THEN 'answer1'
           WHEN ColumnName = 'value2' THEN 'answer2'
           WHEN ColumnName LIKE '%TEST%' THEN 'answer3'
       END AS Answer
FROM TableName
您可以运行的示例

SELECT name,CASE 
           WHEN Name = 'sysobjects' THEN 'answer1'
           WHEN Name = 'syscols' THEN 'answer2'
           WHEN Name LIKE '%p%' THEN 'answer3'
           ELSE 'unknown'
       END AS Answer
FROM sysobjects

需要使用稍微不同的
大小写
语法:

SELECT CASE WHEN ColumnName LIKE 'value1' THEN 'answer1'
            WHEN ColumnName LIKE 'value2' THEN 'answer2'
            WHEN ColumnName LIKE '%TEST%' THEN 'answer3'
ELSE 'not like any of them' END [Answer]
FROM TableName

或者,您可以嵌套CASE-condition和CASE-WHEN-value子句,如下所示:

SELECT CASE ColumnName
           WHEN 'value1' THEN 'answer1'
           WHEN 'value2' THEN 'answer2'
           ELSE CASE WHEN ColumnName LIKE '%TEST%' THEN 'answer3' END
       END AS Answer
FROM TableName
您使用的是“简单的
案例
表达式”,但您应该使用“搜索的
案例
表达式”。请参阅sql ORACLE 10中的一些示例。

SELECT 
    CASE WHEN instr(ColumnName, 'value1')>0 THEN 'answer1'
       WHEN instr(ColumnName,'value2')>0 THEN 'answer2'
       WHEN instr(ColumnName,'TEST')>0 THEN 'answer3'
       ELSE 'not like any of them' 
    END
FROM TableName

出于对SQL的热爱,不要使用游标!您使用的是“简单
CASE
表达式”,但您应该使用“搜索的CASE表达式”。看见
SELECT 
    CASE WHEN instr(ColumnName, 'value1')>0 THEN 'answer1'
       WHEN instr(ColumnName,'value2')>0 THEN 'answer2'
       WHEN instr(ColumnName,'TEST')>0 THEN 'answer3'
       ELSE 'not like any of them' 
    END
FROM TableName