mysql - SQL - 在数字上使用嵌套替换

标签 mysql sql replace

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

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')

有人知道我该如何实现吗?

最佳答案

要在单个查询中完成您的特定问题,您确实可以嵌套 REPLACE() 多次,如下所示。通过分两个阶段进行,您可以使 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

关于mysql - SQL - 在数字上使用嵌套替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52419982/

相关文章:

javascript - 如果我运行多个替换检查,为什么它不能正确替换?

python - 我对字符串方法 .replace 感到困惑

mysql - 以二进制形式插入和选择 UUID(16)

php - Mysqli_num_rows无法正常工作

mysql - 如何在 apache Drill 中使用 sysdate

sql - 计算估计时间行

sql - 向表中插入一个值,确定可用的最小值

sql - T-SQL 存储过程的多个 WHERE 子句输入

Mysql 5.5.10 - Mac 10.6.x - 自动启动

javascript - 为bracket.js制作一个插入函数