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のフォーマットに依存して、常に1つのコンマを含めることができる場合は、比較的単純なMySQL関数を使用できます。

SELECT CONCAT(SUBSTRING_INDEX(name, ',', -1), ' ', SUBSTRING_INDEX(name, ',' 1))
FROM names

ただし、入力には、コンマがまったくない名前も1つあります。この場合、最初にコンマが含まれているかどうかを確認する必要があります。入力が常にゼロまたは1つのコンマを持つことに依存できる場合は、以下を使用できます。

SELECT IF(
  LOCATE(name, ','),
  CONCAT(SUBSTRING_INDEX(name, ',', -1), ' ', SUBSTRING_INDEX(name, ',' 1)),
  name
) FROM names
于 2012-07-23T03:57:45.343 に答える