我有一个名为names
的列,其输入如下:
`name`
Aaron, James
Aberer, Leo
A.J.
A., Narayana Rao
Abbot Jr., Greg
我想更改格式,以便首先出现名字,这就是它需要的方式:
`name`
James Aaron
Leo Aberer
A.J.
Narayana Rao A.
Greg Abbot Jr.
我如何直接在mysql中执行此操作?
答案 0 :(得分:2)
您可以使用此解决方案:
SELECT
CASE WHEN INSTR(name, ',') > 0
THEN TRIM(CONCAT(SUBSTRING_INDEX(name, ',', -1), ' ', SUBSTRING_INDEX(name, ',', 1)))
ELSE name END AS name_formatted
FROM tbl
答案 1 :(得分:1)
如果您可以依赖MySQL中的格式来始终只有一个逗号,那么您可以使用相对简单的MySQL函数。
SELECT CONCAT(SUBSTRING_INDEX(name, ',', -1), ' ', SUBSTRING_INDEX(name, ',' 1))
FROM names
但是,您的输入也有一个完全没有逗号的名称。在这种情况下,您需要先检查它是否有逗号。如果您可以依赖输入始终使用零或一个逗号,则可以使用以下内容。
SELECT IF(
LOCATE(name, ','),
CONCAT(SUBSTRING_INDEX(name, ',', -1), ' ', SUBSTRING_INDEX(name, ',' 1)),
name
) FROM names