首页 > 解决方案 > SQL - 对数字使用嵌套替换

问题描述

我有一个包含一组数字的列的数据库。每个数字都是它自己的值,我想用新值替换数字。

Current Value   New Value
    1               5
    2               3
    3               2
    4               1
  any other         0

以上应该执行以下示例

Input       output
1142         5513
6741         0005
0613         0052

我曾考虑过使用以下嵌套替换,但如果原始值为 3,那么它将按照上图更改为 2。然后它将再次替换为 2!

REPLACE(REPLACE(REPLACE(REPLACE(form,'1','5'),'2','3'),'3','2'),'4','1')

任何人都知道我该如何实现这一目标?

标签: mysqlsqlreplace

解决方案


要在单个查询中完成您的特定问题,您确实可以嵌套 REPLACE() 多次,如下所示。通过分 2 个阶段执行此操作,您可以制作modified 2一个独特的角色,以便您知道需要将哪个更改为 3。

SELECT
REPLACE(    
    REPLACE(
        REPLACE(
            REPLACE(
                REPLACE(
                    REPLACE(
                        REPLACE(
                            REPLACE(
                                REPLACE(
                                    REPLACE(
                                        REPLACE(
                                            REPLACE(
                                                REPLACE(Input, '1','E')
                                            ,'2','C')
                                        ,'3','B')   
                                    ,'4','A')
                                , '5','0')
                            , '6','0')
                        , '7','0')
                    , '8','0')
                , '9','0')
            , 'A','1')
        , 'B','2')
    , 'C','3')
, 'E','5')
from NummerTest

推荐阅读