有人能指出如何检查选择查询是否返回非空结果集吗?
例如,我有下一个查询:
SELECT * FROM service s WHERE s.service_id = ?;
我应该做下一件事:
ISNULL(SELECT * FROM service s WHERE s.service_id = ?)
测试结果集是否为空?
答案 0 :(得分:90)
IF EXISTS(SELECT * FROM service s WHERE s.service_id = ?)
BEGIN
--DO STUFF HERE
END
答案 1 :(得分:71)
使用@@ ROWCOUNT:
SELECT * FROM service s WHERE s.service_id = ?;
IF @@ROWCOUNT > 0
-- do stuff here.....
返回受影响的行数 最后一句话。如果数量 行超过20亿,使用 ROWCOUNT_BIG。
答案 2 :(得分:8)
我同意Ed B.您应该使用EXISTS方法,但更有效的方法是:
IF EXISTS(SELECT 1 FROM service s WHERE s.service_id = ?)
BEGIN
--DO STUFF HERE
END
HTH
答案 3 :(得分:7)
你可以通过多种方式实现这一目标。
IF EXISTS(select * from ....)
begin
-- select * from ....
end
else
-- do something
或者您可以使用IF NOT EXISTS , @@ROW_COUNT
之类的
select * from ....
IF(@@ROW_COUNT>0)
begin
-- do something
end
答案 4 :(得分:5)
尝试:
SELECT * FROM service s WHERE s.service_id = ?;
IF @@ROWCOUNT=0
BEGIN
PRINT 'no rows!'
END
答案 5 :(得分:3)
SELECT COUNT(1) FROM service s WHERE s.service_id = ?
答案 6 :(得分:2)
SELECT * FROM service s WHERE s.service_id = ?;
IF @@rowcount = 0
begin
select 'no data'
end
答案 7 :(得分:1)
总结下面的帖子:
如果您关心的是数据库中是否至少有一个匹配的行,那么请使用exists
,因为这是检查此方法的最有效方法:一旦找到至少一个匹配项,它将返回true行而count
等将找到所有匹配的行。
如果您确实需要使用数据进行处理,或者查询有副作用,或者您需要知道实际的总行数,那么检查ROWCOUNT
或count
可能是最好的方式。
答案 8 :(得分:1)
SELECT count(*) as CountThis ....
然后您可以将其与字符串进行比较,如下所示:
IF CHECKROW_RS("CountThis")="0" THEN ...
CHECKROW_RS
是一个对象
答案 9 :(得分:0)
SELECT count(*) as count FROM service s WHERE s.service_id = ?;
测试count == 0。
更加巴洛克式:
选择大小写时(SELECT count(*)as count FROM service s WHERE s.service_id =?)= 0 然后'没有行,兄弟!'否则'你有数据!'结束为stupid_message;
答案 10 :(得分:0)
在我的sql使用信息功能
select FOUND_ROWS();
它会返回no。 select查询返回的行数。
答案 11 :(得分:0)
有一种方法可以完成一些代码,但确实有效
$sql = "SELECT * FROM messages"; //your query
$result=$connvar->query($sql); //$connvar is the connection variable
$flag=0;
while($rows2=mysqli_fetch_assoc($result2))
{ $flag++;}
if($flag==0){no rows selected;}
else{
echo $flag." "."rows are selected"
}
答案 12 :(得分:0)
class All_Device_List: UIViewController{
var timer: Timer? = nil
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(All_Device_List.runTimedCode), userInfo: nil, repeats: true)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
timer?.invalidate()
timer = nil
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(true)
timer?.invalidate()
timer = nil
}
@objc func runTimedCode() {
//Action continue
}
}