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のフォーマットに依存して、常に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