我知道还有其他类似的问题,但它们特定于某些特殊字符。 我正在寻找一种解决方案,通过该解决方案,我可以过滤掉DB2中列中具有unicode字符的所有记录
答案 0 :(得分:0)
正如mustaccio所说,所有的字符都是unicode。
使用其他语言的文字字符时,可能会出现问题。英语母语人士不了解其他角色的问题是很常见的,因为26个字符在所有编码中都是标准的。
如果您遇到此问题,则必须以其他方式制定问题。类似的东西:
将所有unicode字符作为一组,我想知道哪些字符超出了我语言中有效字母的子集(在我的情况下是西班牙语)。
考虑到这一点,您可以查询数据,并分析哪些值不属于您的语言。你可以用正则表达式来做到这一点。
CREATE OR REPLACE FUNCTION ENCODING_VALIDATION_SPANISH (
IN TEXT VARCHAR(256)
) RETURNS VARCHAR(32)
LANGUAGE SQL
PARAMETER CCSID UNICODE
SPECIFIC F_ENC_VAL_SP
DETERMINISTIC
NO EXTERNAL ACTION
READS SQL DATA
F_ENC_VAL_SP: BEGIN
DECLARE RET VARCHAR(32);
SET RET = XMLCAST (
-- The next line define the valid characters for the Spanish language.
XMLQUERY ('fn:matches($TEXT,"^[A-Za-z\- \.,\?\u00C1\u00E1\u00C9\u00E9\u00CD\u00ED\u00D3\u00F3\u00DA\u00FA\u00DC\u00EC\u0147\u0148]*$")'
PASSING TEXT AS "TEXT"
) AS VARCHAR(32));
RETURN RET;
END F_ENC_VAL_SP @
我写了一篇文章,在那里我解释了这个问题:http://angocadb2.blogspot.fr/2013/09/validate-encoding-problems-in-db2.html