处理了一个带有不可见字段的列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是如何得到的.
--> 语法错误, 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)不能被批量替换
为啥不能被批量替换掉?????
如有不对的地方请指正
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
select ascii(RIGHT(golds,1)) from tmp3 --结果:0
#5
有没有具体的数据,就一条数据,把golds 贴出来,或者截图也行。
估计是里面有一些特殊字符,有可能还是控制字符。
#6
只有一条数据有问题 所以我单独把它放在一个表的字段里装着了
#7
掉了这个图
#8
已解决。结贴
#1
用 isnull(表达式,'替换的字符串表达式')
#2
select ascii(right(x)) from test --结果是0
--> 语法错误, right()函数需有2个参数, 不知LZ的结果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)不能被批量替换
为啥不能被批量替换掉?????
如有不对的地方请指正
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
select ascii(RIGHT(golds,1)) from tmp3 --结果:0
#5
有没有具体的数据,就一条数据,把golds 贴出来,或者截图也行。
估计是里面有一些特殊字符,有可能还是控制字符。
#6
只有一条数据有问题 所以我单独把它放在一个表的字段里装着了
#7
掉了这个图
#8
已解决。结贴