sql-server - 如何避免sqlserver中声明变量中的空条件
问题描述
CREATE TABLE #UserCompany
([ID] int, [CustId] varchar(2), [CustName] varchar(1), [Status] int)
;
INSERT INTO #UserCompany
([ID], [CustId], [CustName], [Status])
VALUES
(1, 'a1', 'A', null),
(2, 'a1', 'A', null),
(3, 'a2', 'B', null),
(4, 'a3', 'B', null),
(5, 'a4', 'C', null),
(6, 'a4', 'C', null),
(7, 'a4', 'D', null),
(8, 'a6', 'E', null)
;select * from #UserCompany
在传递一些值时,我正在获取值
declare @id varchar(100)='1,2'
select * from #UserCompany where id in (select CAST(value AS int) FROM string_SPLIT(@id, ','))
如果 iam 传递 null iam 没有得到任何值,即使我们没有传递任何值,如下所示
declare @id varchar(100)=null
select * from #UserCompany where id in (select CAST(value AS int) FROM string_SPLIT(@id, ','))
输出应该是总表应该显示
解决方案
declare @id varchar(100)='1,2'
select *
from #UserCompany
where id in (select CAST(value AS int) FROM string_SPLIT(@id, ','))
OR @id IS NULL;
推荐阅读
- xcode - pod安装后的错误
- vba - VBA 中的 getElementsByName
- udp - 如何使用 LWIP、UDP 通过以太网接收数据
- swift - 如果为零,则替代三进制以生成空字符串?
- android - 在屏幕之间导航:React Native,无法确定 com.google.android.material:material:1.1.0 的工件:由于早期错误而跳过
- sql - 如何删除在postgresql中按日期列排序的每个分组结果中的第一行
- vue.js - 使用 Jest 测试 vue-echarts 组件时出错
- android - 创建可以移动并将其集成到 Android 应用程序中的 3D 化身模型
- java - 持久化数千个实体的最有效方法是什么?
- ios - NSPredicate:搜索相关值的数组,NOT