这是我的简单查询。如果我查询一条不存在的记录,那么我将一无所获。
SELECT
CASE WHEN table1.column1= @column1 THEN 'XX'
ELSE 'YY' END from table1 where table1.column2=@column2
它不返回任何选定的行。
我尝试了ISNULL()
,但没有纠正
我需要返回“ YY”
任何人都可以帮忙.. !! 在此先感谢!
答案 0 :(得分:0)
select
case
when coalesce(table1.column1,'empty') = @column1
then 'XX'
else 'YY'
end as SOMETHING
from table1
where coalesce(table1.column2,'empty') = @column2
Coalesce用于检查该值是否为null,如果为null,则更改为列名旁边指定的值。如果您要提供数据,我可以根据您的需要更改sql查询。
答案 1 :(得分:0)
尝试一下
SELECT
CASE WHEN table1.column1= @column1 THEN 'XX'
ELSE 'YY' END from table1 where case when table1.column2=@column2 then table1.column2 else @column2 end = @column2
注意:如果table1中有多个记录,则该查询将为所有这些行返回YY
答案 2 :(得分:0)
让它变得简单容易。
首先根据您的where
条件检查数据是否可用。如果是,则执行其余的查询;如果不是,则仅返回YY
例如:
If exists(SELECT * from table1 where table1.column2=@column2)
begin
SELECT
CASE WHEN table1.column1 = @column1 THEN 'XX'
ELSE 'YY' END AS [COLNAME]
from table1 where table1.column2=@column2
end
else
begin
SELECT 'YY' as [COLNAME]
End
答案 3 :(得分:0)
您发布的查询带有@符号,这不是SQL-Server中Oracle变量的默认替换字符,除非您已使用
SET DEFINE @
并在传递字符串文字时加上引号。不确定是否以这种方式使用它。
我建议您使用以冒号:
为前缀的绑定变量
关于您的问题
我需要返回“ YY”
对于no rows selected
,您可以将case块放在聚合函数中,例如MAX
,该函数将返回包含null
的行,然后COALESCE
可以处理没有行时,为您提供所需值的空值。
SELECT
COALESCE(
MAX(
CASE
WHEN t.column1 =:column1 THEN 'XX'
ELSE 'YY'
END
),'YY')
FROM
table1 t
WHERE
t.column2 =:column2;