我有一个名为的列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中执行此操作?
您可以使用此解决方案:
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
如果您可以依靠 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