如何基于CASE执行不同的SELECT语句

sur*_*t4u 5 sql sybase case

我在使用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
Run Code Online (Sandbox Code Playgroud)

例外:

[错误]脚本行:1-5 --------------------------
关键字'select'附近的语法不正确。
消息:156,级别:15,状态:2
服务器:sunsrv4z7,行:2

我无法纠正语法。我正在从用户那里获取char_length的字符串作为输入。如何根据特定条件触发查询?CASE是正确的选择吗?还是我必须使用其他任何东西。

Pra*_*ana 5

只需在选择语句周围加上左右括号即可解决您的问题

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
Run Code Online (Sandbox Code Playgroud)


Voo*_*ild 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
Run Code Online (Sandbox Code Playgroud)

问题是您在嵌套的“Select”语句中缺少左括号和右括号:)