如何在Microsoft SQL SELECT查询中执行IF?

时间:2011-06-01 19:44:56

标签: sql sql-server tsql

我是SQL的绝对初学者。 例: 我想查询以选择名称以X 开头的人(如果结果为0 ),我想选择名称以Y开头的人。

我该怎么做?感谢。

4 个答案:

答案 0 :(得分:3)

我将问题解释为:如果找不到以X开头的名称,则显示以Y开头的名称。 这个解决方案会很快,因为从发现1个记录的那一刻开始就会缩短存在

if exists(select * from table where name like 'X%')
  begin
    select * from table where name like 'X%'
  end
else
  begin
    select * from table where name like 'Y%'
  end

理想情况下,名称列会被编入索引以使其正常运行。

答案 1 :(得分:1)

可能这是一个更好的解决方案:

select * from table where name like 'X%'

if @@ROWCOUNT = 0
   select * from table where name like 'Y%'

答案 2 :(得分:0)

有一些方法可以在单个SQL语句中执行此操作,但它们非常昂贵(包括时间和资源)。最好在存储过程中使用这种逻辑。

答案 3 :(得分:0)

这是一个基于集合的解决方案:

SELECT * 
  FROM table 
 WHERE NAME LIKE 'X%'
UNION
SELECT * 
  FROM table 
 WHERE NAME LIKE 'Y%'
       AND NOT EXISTS (
                       SELECT * 
                         FROM table AS T1
                        WHERE T1.NAME LIKE 'X%'
                      );