sql怎么在where后加判断来决定判断条件

ajdkjalj 2018-10-14 05:57:26
我现在要在一个字段中判断如果字段不为空,就加条件where a='t',如果为空,就不执行,得到的是所有数据
...全文
3900 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2018-10-15
  • 打赏
  • 举报
回复
a列有索引时用条件1,2可能会造成用不到索引可强制指定索引,数据量小时都可用
--1.
where a='t' AND a IS NOT NULL OR a IS NULL
--或
--2.
where ISNULL(a,'t')='t'
xiaoxiangqing 2018-10-15
  • 打赏
  • 举报
回复
用动态语句或者case
二月十六 2018-10-14
  • 打赏
  • 举报
回复
select * from 表 where case when 字段 is not null then 't' else t end =a
吉普赛的歌 2018-10-14
  • 打赏
  • 举报
回复
DECLARE @a VARCHAR(10)
SET @a=''

--方法1:
--使用简单,但效率不高,大部分情况下无法使用索引
SELECT * FROM [master].dbo.spt_values AS sv 
WHERE ISNULL(@a,'')='' OR sv.number=@a

--方法2:
--要用到动态sql, 但能使用索引。推荐做法。
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT * FROM [master].dbo.spt_values AS sv WHERE 1=1 '
IF @a>''
BEGIN
	SET @sql=@sql+' and sv.number=@a '
END
EXEC sp_executesql @sql,N'@a VARCHAR(10)',@a

吉普赛的歌 2018-10-14
  • 打赏
  • 举报
回复
对于这种情况, 我的博客里有比较详细的讲述 , 你可以看看: https://blog.csdn.net/yenange/article/details/75103438

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧