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
但这确实是一个设计问题。您不应构建查询以根据值的长度提取不同的列。
我正在尝试创建一个查询,该查询取决于外部变量长度 运行 具有不同 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
但这确实是一个设计问题。您不应构建查询以根据值的长度提取不同的列。