Sql 如何在DB2中查找所有具有unicode字符的记录
我知道还有其他类似的问题,但它们是特定于某些特殊角色的。Sql 如何在DB2中查找所有具有unicode字符的记录,sql,db2,Sql,Db2,我知道还有其他类似的问题,但它们是特定于某些特殊角色的。 我正在寻找一种解决方案,通过该解决方案,我可以过滤掉DB2中列中具有unicode字符的所有记录,正如Mustacio所说,所有字符都是unicode 使用其他语言的文本字符时可能会遇到问题。以英语为母语的人不理解其他字符的问题是很常见的,因为26个字符在所有编码中都是标准的 如果你有这个问题,你必须用另一种方式来描述你的问题。比如: 将所有unicode字符作为一个集合,我想知道在我的案例中,哪些字符不属于西班牙语中有效字母的子集 记住
我正在寻找一种解决方案,通过该解决方案,我可以过滤掉DB2中列中具有unicode字符的所有记录,正如Mustacio所说,所有字符都是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 @
我写了一篇文章,解释了这个问题:定义unicode字符。在Unicode数据库中,任何存储的字符都是Unicode字符,因此根据该定义,所有具有非空值的记录中都将包含Unicode字符。