我有数据库,其中用户的名字就像这样的“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
),
答案 0 :(得分:2)
只需使用substring_index()
:
update names_table
set name = concat_ws(' ',
trim(substring_index(name, ',', -1)),
trim(substring_index(name, ',', 1))
)
where name like '%,%';
我不确定你为什么要发明另一个功能来做这件事。