我的 CUSTOMER 表中有一些字符会导致下游 XML 进程停止运行。它似乎是LAST_NAME有一个两字节字符的地方。我已经查看了解释collation的这个SQL Server 问题。但我还是被困住了。我注意到有些字符是 2 字节。我正在使用 AL32UTF8 和 UTF8 字符集。
如何找到包含 2 个字节字符的 last_names?这是我应该问的问题,是否要查找所有 2 字节字符而不考虑排序规则?
我的 CUSTOMER 表中有一些字符会导致下游 XML 进程停止运行。它似乎是LAST_NAME有一个两字节字符的地方。我已经查看了解释collation的这个SQL Server 问题。但我还是被困住了。我注意到有些字符是 2 字节。我正在使用 AL32UTF8 和 UTF8 字符集。
如何找到包含 2 个字节字符的 last_names?这是我应该问的问题,是否要查找所有 2 字节字符而不考虑排序规则?
对于 bytes != 字符的基本检查,您可以执行类似的操作
select *
from customer
where length(last_name) != lengthb(last_name);
但正如 NullUserException 所说,这取决于您真正想要如何定义特殊字符。
看这里:
http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions233.htm#SQLRF06162
SELECT last_name, VSIZE (last_name) "BYTES"
FROM employees
WHERE department_id = 10
ORDER BY employee_id;
LAST_NAME BYTES
--------------- ----------
Whalen 6