整理 DB2 中的 Latin1_General_CI_AI 等效项

问题描述 投票:0回答:1

无论列或整个数据库的排序规则如何,在 SQLServer 中我编写了

Update MyTable Set MyColumn = Replace(MyColumn Collate Latin1_General_CI_AI, 'foo', 'bar')
将 FOO、Foo 或 foo 替换为 bar,而其余的大小写保持不变。

无论列的代码页还是整个数据库,DB2 如何做同样的事情? 我试过这个:

Update MyTable Set MyColumn = Replace(COLLATION_KEY_BIT(MyColumn, 'CLDR2701_EX_S1'), 'foo', 'bar')

我必须使用 DB2 LUW 10.5 和 iSeries 7.1、7.2、7.3 定期在不同的客户处执行该查询。我认为它们的代码页都是 1252。

但我不安全才是正确的方法。首先,DB2 说 CLDR2701_XE_S1 未定义。此外,我认为该函数将字符串中的每个字母转换为具有相同值的第一个字母(但在我找到现有的排序规则名称之前,我永远不会知道)

谢谢你

卢西奥

db2 collation
1个回答
0
投票

对于 DB2 for LUW 10.5 来说是这样的:

SELECT
  XMLCAST (XMLQUERY ('fn:replace ($s, "foo", "bar", "i")' PASSING str AS "s") AS VARCHAR(100))
  AS S
FROM 
(
  VALUES 
    'abc Foo def'
  , 'abc fOO def'
) mytab (str) 

S
abc 栏 def
abc 栏 def

小提琴

尝试对 DB2 for IBM i 使用 REGEXP_REPLACE

© www.soinside.com 2019 - 2024. All rights reserved.