0

我有一个名为的列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中执行此操作?

4

2 回答 2

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

SQLFiddle 演示

于 2012-07-23T03:51:38.833 回答
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
于 2012-07-23T03:57:45.343 回答