我在使用CASE语句执行查询时遇到问题。 根据我的条件,(例如长度),我想执行不同的SQL语句。
有问题的示例查询如下:
select case
when char_length('19480821') = 8
then select count(1) from Patient
when char_length('19480821')=10
then select count(1) from Doctor
end
例外:
[错误]脚本行:1-5 --------------------------
关键字“select”附近的语法不正确。
消息:156,等级:15,状态:2
服务器:sunsrv4z7,行:2
我无法更正语法。我从char_length获取字符串作为用户的输入。 如何根据特定条件触发查询? CASE是正确的选择吗?或者我必须使用任何其他东西。
答案 0 :(得分:4)
只需在select语句周围打开和关闭括号就可以解决问题
select
case when
char_length('19480821')=8 then
(select count(1) from Patient )
when
char_length('19480821')=10 then
(select count(1) from Doctor )
end
答案 1 :(得分:2)
select
case when char_length('19480821')=8 then (select count(1) from Patient)
when char_length('19480821')=10 then (select count(1) from Doctor)
end
问题是您在嵌套的“选择”语句中缺少开始和结束括号:)
答案 2 :(得分:2)
请注意,它不是一个案例STATEMENT,它是一个案例EXPRESSION。通过将查询括在括号中,您将它们(语法上)转换为值。
这在原理上类似于子查询,例如 “从医生那里选择工资名称=(从医生那里选择最高(工资))”
答案 3 :(得分:-1)
选择 情况下 LEN('1948082100')= 8然后 (选择“ HELLO”) 什么时候 LEN('194808210')= 10然后 (选择“ GOODBYE”) 结束
更改值以测试结果。