首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2013-03-13 
大家帮忙解释下这个SQL中语句的执行结果啊环境 SQLServer2008 ①select REPLACE(12, ,null) 这个返回 N

大家帮忙解释下这个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’

热点排行