【问题标题】:MySQL | update cell based on a functionMySQL |基于函数更新单元格
【发布时间】:2016-10-28 23:21:11
【问题描述】:

我有一个数据库,其中用户的名字是这样的“Ortega,Rafael”,但我需要它的名字在第一个位置并且没有逗号。

我发现了这个函数,它可以让我用分隔符作为子字符串:

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

但是当我尝试编写 UPDATE 查询时,我被卡住了

UPDATE `names_table` set `name` = CONCAT(
    SPLIT_STR(
        SELECT `name` FROM `names_table` WHERE <I need help here>,
        ',',
        1
    ), 
    " ",
    SPLIT_STR(
        SELECT `name` FROM `names_table` WHERE <I need help here>,
        ',',
        2
    ), 

【问题讨论】:

    标签: mysql sql subquery substring


    【解决方案1】:

    只需使用substring_index():

    update names_table
        set name = concat_ws(' ',
                             trim(substring_index(name, ',', -1)), 
                             trim(substring_index(name, ',', 1))
                            )
        where name like '%,%';
    

    我不确定你为什么要发明另一个函数来做到这一点。

    【讨论】:

    • 哇,我的错……我不知道 substring_index 函数,所以我用谷歌搜索它,有人说你需要自己创建函数。非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2014-11-16
    相关资源
    最近更新 更多