mssql ascii(x) 是NULL值吗

时间:2022-03-23 17:16:47

处理了一个带有不可见字段的列x 发现 select    ascii(right(x))  from  test  --结果是0
于是用replace(x,char(0),'') 去替换这个空值 发现没有成功
问题 char(0) 这个表示数据库里的NULL 吗? 如果是 那 空值替换不了NULL 也可以解释通

8 个解决方案

#1


用 isnull(表达式,'替换的字符串表达式')

#2


select    ascii(right(x))  from  test  --结果是0
--> 语法错误, right()函数需有2个参数, 不知LZ的结果0是如何得到的.

#3


我把这个值写到tmp3表的golds字段
select golds from tmp3--结果:11170
select LEN(golds) from tmp3--结果:44 说明有特殊字符
--select RIGHT(golds,1) from tmp3
select ISNULL(RIGHT(golds,1),1) from tmp3 --查询结果是空 说明不是null值
select replace(RIGHT(golds,1),CHAR(0),'1') from tmp3--结果:1  , 单个char(0)可以被‘1’替换成功
select replace(golds,CHAR(0),'a') from tmp3--结果:11170 ,  没有被替换掉

结论:这个char(0)不能被批量替换
为啥不能被批量替换掉?????
如有不对的地方请指正

#4


补充一个 我为什么替换char(0)
select ascii(RIGHT(golds,1)) from tmp3 --结果:0

#5


引用 3 楼 qaz595150622 的回复:
我把这个值写到tmp3表的golds字段
select golds from tmp3--结果:11170
select LEN(golds) from tmp3--结果:44 说明有特殊字符
--select RIGHT(golds,1) from tmp3
select ISNULL(RIGHT(golds,1),1) from tmp3 --查询结果是空 说明不是null值
select replace(RIGHT(golds,1),CHAR(0),'1') from tmp3--结果:1  , 单个char(0)可以被‘1’替换成功
select replace(golds,CHAR(0),'a') from tmp3--结果:11170 ,  没有被替换掉

结论:这个char(0)不能被批量替换
为啥不能被批量替换掉?????
如有不对的地方请指正


有没有具体的数据,就一条数据,把golds 贴出来,或者截图也行。

估计是里面有一些特殊字符,有可能还是控制字符。

#6


mssql ascii(x) 是NULL值吗

只有一条数据有问题 所以我单独把它放在一个表的字段里装着了

#7


mssql ascii(x) 是NULL值吗

掉了这个图

#8


已解决。结贴

#1


用 isnull(表达式,'替换的字符串表达式')

#2


select    ascii(right(x))  from  test  --结果是0
--> 语法错误, right()函数需有2个参数, 不知LZ的结果0是如何得到的.

#3


我把这个值写到tmp3表的golds字段
select golds from tmp3--结果:11170
select LEN(golds) from tmp3--结果:44 说明有特殊字符
--select RIGHT(golds,1) from tmp3
select ISNULL(RIGHT(golds,1),1) from tmp3 --查询结果是空 说明不是null值
select replace(RIGHT(golds,1),CHAR(0),'1') from tmp3--结果:1  , 单个char(0)可以被‘1’替换成功
select replace(golds,CHAR(0),'a') from tmp3--结果:11170 ,  没有被替换掉

结论:这个char(0)不能被批量替换
为啥不能被批量替换掉?????
如有不对的地方请指正

#4


补充一个 我为什么替换char(0)
select ascii(RIGHT(golds,1)) from tmp3 --结果:0

#5


引用 3 楼 qaz595150622 的回复:
我把这个值写到tmp3表的golds字段
select golds from tmp3--结果:11170
select LEN(golds) from tmp3--结果:44 说明有特殊字符
--select RIGHT(golds,1) from tmp3
select ISNULL(RIGHT(golds,1),1) from tmp3 --查询结果是空 说明不是null值
select replace(RIGHT(golds,1),CHAR(0),'1') from tmp3--结果:1  , 单个char(0)可以被‘1’替换成功
select replace(golds,CHAR(0),'a') from tmp3--结果:11170 ,  没有被替换掉

结论:这个char(0)不能被批量替换
为啥不能被批量替换掉?????
如有不对的地方请指正


有没有具体的数据,就一条数据,把golds 贴出来,或者截图也行。

估计是里面有一些特殊字符,有可能还是控制字符。

#6


mssql ascii(x) 是NULL值吗

只有一条数据有问题 所以我单独把它放在一个表的字段里装着了

#7


mssql ascii(x) 是NULL值吗

掉了这个图

#8


已解决。结贴