如果没有找到则返回一个整数(TSQL ASP.NET VB)

时间:2013-12-12 14:36:21

标签: asp.net sql vb.net tsql

如果在SQL调用中找不到任何内容,我需要返回一个值(0)。

这就是我所拥有的(编辑/简化以使其更具意义),这是从代码隐藏中调用的。

sql1 = "INSERT INTO [Xtr_MenuItems]([menu_order]) 
values(1 + (select max(menu_order) from [Xtr_MenuItems]))

SO进入数据库我插入[menu_order] + 1中找到的最大数字。这样可以正常工作,假设找到了一​​些东西。

但是,如果(select max(menu_order) from [Xtr_MenuItems]))失败(找不到任何内容),那么我想返回0(因为1 +没有=什么都没有,并且sql爆炸)

我该怎么做?我尝试过各种各样的'IF EXISTS','OUTPUT',但是无法让它工作......

3 个答案:

答案 0 :(得分:2)

试试这个:

sql1 = "INSERT INTO [Xtr_MenuItems]([menu_order]) 
values(1 + ISNULL((select max(menu_order) from [Xtr_MenuItems]),0))

我使用了ISNULL函数,如果查询结果为null,则返回0

答案 1 :(得分:1)

而不是values,您可以立即使用select

insert  Xtr_MenuItems
        (menu_order) 
select  1 + isnull(max(menu_order),0) 
from    Xtr_MenuItems

答案 2 :(得分:0)

COALESCE是符合标准的提供空值替代方法的方法:

sql1 = "INSERT INTO [Xtr_MenuItems]([menu_order]) 
values(1 + COALESCE((select max(menu_order) from [Xtr_MenuItems]),0))

它具有与Microsoft提供的ISNULL函数类似的语法,但可以在多个数据库平台上运行,并且可以处理多个回退。

W3Schools非常了解空处理here