Den*_* S. 59 sql database sql-server
任何人都可以指出如何检查选择查询是否返回非空结果集?
例如,我有下一个查询:
SELECT * FROM service s WHERE s.service_id = ?;
Run Code Online (Sandbox Code Playgroud)
我应该做下一件事:
ISNULL(SELECT * FROM service s WHERE s.service_id = ?)
Run Code Online (Sandbox Code Playgroud)
测试结果集是否为空?
Ed *_*d B 97
IF EXISTS(SELECT * FROM service s WHERE s.service_id = ?)
BEGIN
--DO STUFF HERE
END
Run Code Online (Sandbox Code Playgroud)
mar*_*c_s 78
使用@@ ROWCOUNT:
SELECT * FROM service s WHERE s.service_id = ?;
IF @@ROWCOUNT > 0
-- do stuff here.....
Run Code Online (Sandbox Code Playgroud)
返回最后一个语句影响的行数.如果行数超过20亿,请使用ROWCOUNT_BIG.
我同意Ed B.您应该使用EXISTS方法,但更有效的方法是:
IF EXISTS(SELECT 1 FROM service s WHERE s.service_id = ?)
BEGIN
--DO STUFF HERE
END
Run Code Online (Sandbox Code Playgroud)
HTH
你可以通过多种方式实现这一目标.
IF EXISTS(select * from ....)
begin
-- select * from ....
end
else
-- do something
Run Code Online (Sandbox Code Playgroud)
或者你可以使用IF NOT EXISTS , @@ROW_COUNT喜欢
select * from ....
IF(@@ROW_COUNT>0)
begin
-- do something
end
Run Code Online (Sandbox Code Playgroud)
尝试:
SELECT * FROM service s WHERE s.service_id = ?;
IF @@ROWCOUNT=0
BEGIN
PRINT 'no rows!'
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
225637 次 |
| 最近记录: |