如何在DB2中查找具有unicode字符的所有记录

时间:2014-06-19 10:27:05

标签: sql db2

我知道还有其他类似的问题,但它们特定于某些特殊字符。 我正在寻找一种解决方案,通过该解决方案,我可以过滤掉DB2中列中具有unicode字符的所有记录

1 个答案:

答案 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