用于格式化mysql中名称的字符串替换

时间:2012-07-23 03:46:18

标签: mysql sql

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

2 个答案:

答案 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

SQLFiddle Demo

答案 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