我想知道 a 的字面意思是什么空字符(例如“\0”)在 SQL 中。
Note:不是 NULL 字段值,而是空字符 (see link).
我有一列混合了典型字符和空字符。我正在尝试用不同的值替换空字符。我本以为以下内容会起作用,但没有成功:
select REPLACE(field_with_nullchar, char(0), ',') from FOO where BAR = 20
中存在两种不同的行为凯德·鲁的回答:替换成功(使用SQL排序规则时)和不成功(使用Windows排序规则时)。原因在于所使用的排序规则类型。
这种行为是已提交大约 4 年前对微软说:
Q:尝试替换 NUL 字符时
使用replace(),这有效的是
值有 SQL 排序规则,但没有
Windows 整理。
A:这是因为 0x0000
是 Windows 中未定义的字符
整理。所有未定义的字符
在比较、排序期间被忽略,
和模式匹配。所以寻找
'a' + char(0) 真正在搜索
‘a’,搜索 char(0) 是
相当于空字符串。
处理未定义字符的方法
有点令人困惑,但这就是
Windows 定义的排序方式,
并且 SQL Server 符合
通用 Windows API。
在SQL排序规则中,没有这个概念
未定义的字符。每个代码
点被分配了一个权重,这就是为什么
我们认为那里没有问题。
但不幸的是,它仍然没有记录。
因此,似乎唯一的解决方案是将排序规则更改为 SQL 排序规则(例如SQL_Latin1_General_CP1_CI_AS
也可以使用)。
* I removed my previous answer as unnecessary
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)