我想case在 SQL Server中的表达式中给出结果的表达式。当我检查
例如。
Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Searched CASE expression:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Run Code Online (Sandbox Code Playgroud)
我想将 result_expression 作为以下示例查询。
select * from mytable where
CASE WHEN col1='12' THEN col2 like '%12%' ELSE col3 like '%12%' END
Run Code Online (Sandbox Code Playgroud)
但它给出了错误
关键字“like”附近的语法不正确。
这有什么可能吗?
SQL Server 没有BOOLEAN类型 - 至少没有公开,在内部它具有在条件中使用的布尔值 - 并且CASE表达式不能具有这种类型的结果。请参阅上面的链接,其中解释了:
与其他 SQL Server 数据类型不同,布尔数据类型不能指定为表列或变量的数据类型,也不能在结果集中返回。
您可以WHERE使用ANDand重写条件OR:
SELECT *
FROM mytable
WHERE ( (col1 = '12') AND (col2 LIKE '%12%') )
OR ( (col1 <> '12' OR col1 IS NULL) AND (col3 LIKE '%12%') ) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |