SQL 基于外部变量长度的 IF 语句

SQL IF Statement based on an external variable length

我正在尝试创建一个查询,该查询取决于外部变量长度 运行 具有不同 WHERE 子句的查询。

psuedo code:

bnum is a value entered by a user

IF bnum is 4 characters long 
SELECT Col1 from table Where Col2 = bnum
ELSE bnum is 5 characters long
SELECT Col1 from table where Col3 = bnum

在这一点上,能够判断长度和 运行 适当的查询是最理想的,但我对其他选项持开放态度,因为我的方法可能完全不合适。

我尝试了一个包含两个 where 子句的基本 select 语句,但得到的列无效。 尝试使用 EXISTS 但它 returns 所有记录。 LEN() 函数似乎必须是查询的结果,因此这似乎不是一个选项。

您需要在 WHERE 子句中添加 CASE 语句:

SELECT col1 from table
WHERE bnum = case len(bnum) 
    when 4 then col2
    when 3 then col3
end
SELECT Col1 from table Where Col2 = bnum and LEN(bnum)=4
UNION
SELECT Col1 from table where Col3 = bnum and LEN(bnum)=5

但这确实是一个设计问题。您不应构建查询以根据值的长度提取不同的列。