MySQL |根据函数

时间:2016-10-28 23:21:12

标签: mysql sql subquery substring

我有数据库,其中用户的名字就像这样的“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
    ), 

1 个答案:

答案 0 :(得分:2)

只需使用substring_index()

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

我不确定你为什么要发明另一个功能来做这件事。