读书人

大家帮忙解释上这个SQL中语句的执行结

发布时间: 2013-03-13 10:56:58 作者: rapoo

大家帮忙解释下这个SQL中语句的执行结果啊
环境 SQLServer2008

①select REPLACE('12',' ',null)
这个返回 NULL
②select ISNULL(NULLIF(Rtrim(ltrim(' ')),''),999999)
这个返回 *

为什么?
[解决办法]
replace返回值nvarchar 或 ntext
如果任意参数为 NULL,则返回 NULL。--联机丛书

第二个不详~
[解决办法]
1、REPLACE函数规定:
如果任何一个参数为 NULL,则返回 NULL。

2、Rtrim(ltrim(' '))返回char(4)的'',NULLIF(Rtrim(ltrim(' ')),'')是char(4)的null
ISNULL(NULLIF(Rtrim(ltrim(' ')),''),999999)隐式转换为
ISNULL(NULLIF(Rtrim(ltrim(' ')),''),'999999'),由于'999999'超出char(4)的长度,结果显示*,表示数据转换由于长度不足出现的问题


[解决办法]

引用:
1、REPLACE函数规定:
如果任何一个参数为 NULL,则返回 NULL。

2、Rtrim(ltrim(' '))返回char(4)的'',NULLIF(Rtrim(ltrim(' ')),'')是char(4)的null
ISNULL(NULLIF(Rtrim(ltrim(' ')),''),999999)隐式转换为
ISN……

海爷
select ISNULL(NULLIF(Rtrim(ltrim(' ')),''),'999999')返回的是‘9999’

读书人网 >SQL Server

热点推荐