Mysql SQL-对数字使用嵌套替换

Mysql SQL-对数字使用嵌套替换,mysql,sql,replace,Mysql,Sql,Replace,我有一个包含一组数字的列的数据库。每个数字都有自己的值,我想用新值替换这个数字 Current Value New Value 1 5 2 3 3 2 4 1 any other 0 以上应执行FLOWING示例 Input output 1142 5513 6741 0005 061

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

Current Value   New Value
    1               5
    2               3
    3               2
    4               1
  any other         0
以上应执行FLOWING示例

Input       output
1142         5513
6741         0005
0613         0052
我曾经考虑过使用下面的嵌套替换,但是如果原始值是3,那么它将根据上面的图表更改为2。然后它将再次替换为2

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

有人知道我如何做到这一点吗?

要在一个查询中回答您的特定问题,您确实可以按如下所示多次嵌套REPLACE()。通过分两个阶段执行,您可以将
修改后的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

可以使用存储过程执行此操作。但是,除非您使用的是版本8,并且可以使用递归CTE,否则您无法在单个查询中完成此操作。不确定mysql是否有
@LEN
@SUBSTRING
,但可以使用这些函数在单个查询中完成。它有LEN,也有SUBSTRING,您的想法是什么@mbijen有一个想法,所以尝试了它,不会起作用。我仍在替换已编辑的2。列的数据类型是什么?都是数字吗?跳出框框思考的可爱方式!非常感谢您的帮助-现场工作!