2

我有 2 个文本列,我需要将数组 1('q','x','y','z')中的(更新时)字符替换为数组 2 中的索引等效值('a',' b','c','d')。

我最接近 atm 是将替换调用嵌套在彼此中,就像这样

UPDATE 
    mytable 
SET 
    col1=replace(
            replace(
                replace(
                    replace(
                        col1,'q','a'
                    ),'x','b'
                ),'y','c'
            ),'z','d'
        ),
    col2=replace(
            replace(
                replace(
                    replace(
                        col2,'q','a'
                    ),'x','b'
                ),'y','c'
            ),'z','d'
        )        

但肯定有更好的方法来做到这一点?在我的现场案例中,我有 14 个这样的字符对。如果它有任何相关性 - 这些字符是日本象形文字和瑞典字母表中的重音字母的混合体。

4

1 回答 1

2

PostgreSQL 对此有特殊的功能,translate()

update mytable set
    col1 = translate(col1, 'qxyz', 'abcd'),
    col2 = translate(col2, 'qxyz', 'abcd')

sql fiddle example

于 2013-11-13T15:25:28.843 回答