(4.52)解决sql server动态SQL中对表字段操作时需要频繁 ISNULL的问题

 


使用 SET CONCAT_NULL_YIELDS_NULL OFF 来使得  'a'+null  结果为  'a' 而不是 null

【sql server2012以下】SET CONCAT_NULL_YIELDS_NULL OFF

官网:https://docs.microsoft.com/zh-cn/sql/t-sql/statements/set-concat-null-yields-null-transact-sql?view=sql-server-ver15

当 SET CONCAT_NULL_YIELDS_NULL 为 ON 时,串联空值与字符串将产生 NULL 结果。 

  例如,SELECT 'abc' + NULL 将生成 NULL

当 SET CONCAT_NULL_YIELDS_NULL 为 OFF 时,串联空值与字符串将产生字符串本身(空值作为空字符串处理)。 

  例如,SELECT 'abc' + NULL 将生成 abc

  

 

 

 

如果未指定 SET CONCAT_NULL_YIELDS_NULL,则应用 CONCAT_NULL_YIELDS_NULL 数据库选项的设置。

 备注

  SET CONCAT_NULL_YIELDS_NULL 与 ALTER DATABASE 的 CONCAT_NULL_YIELDS_NULL 设置相同。

  SET CONCAT_NULL_YIELDS_NULL 的设置是在执行或运行时设置的,而不是在分析时设置的。

创建或更改索引视图、计算列上的索引、筛选索引或空间索引时,SET CONCAT_NULL_YIELDS_NULL 必须为 ON。 

如果 SET CONCAT_NULL_YIELDS_NULL 为 OFF,无法对包含计算列上的索引、筛选索引、空间索引或索引视图的表运行任何 CREATE、UPDATE、INSERT 和 DELETE 语句。 

有关计算列的索引视图和索引需要的 SET 选项设置的详细信息,请参阅 SET Statements (Transact-SQL) 中的“使用 SET 语句时的注意事项”。

如果将 CONCAT_NULL_YIELDS_NULL 设置为 OFF,则不能出现跨服务器边界的字符串串联。

要查看此设置的当前设置,请运行以下查询。

判断是否开启

DECLARE @CONCAT_SETTING VARCHAR(3)
SET  @CONCAT_SETTING = 'OFF';  
IF ( (4096 & @@OPTIONS) = 4096 ) SET @CONCAT_SETTING = 'ON';  
SELECT @CONCAT_SETTING AS CONCAT_NULL_YIELDS_NULL; 

 

【sql server2012及以上】使用concat函数

 

 

CONCAT 采用可变数量的字符串参数,并将它们串联成单个字符串。 它需要至少两个输入值;否则将引发错误。 所有参数都隐式转换为字符串类型,然后串联在一起。 Null 值被隐式转换为空字符串。 如果所有参数都为 Null,则返回 varchar(1) 类型的空字符串。 隐式转换为字符串的过程遵循现有的数据类型转换规则。  

posted @   郭大侠1  阅读(235)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2019-12-09 【转】sql server迁移到mysql
2019-12-09 【基本优化实践】【1.6】在sql server修改且移动数据库文件位置
2019-12-09 linux shell中的EOF
2018-12-09 Linux学习笔记(7)CRT实现windows与linux的文件上传下载
点击右上角即可分享
微信分享提示