我有以下问题。
我的表,比如 tab1,具有如下名称列“姓氏,名字”。我想让它成为“FirstName LastName”列。
关于如何做到这一点的任何想法?请注意,没有逗号,但我想一旦我弄清楚如何实际翻转名字和姓氏,就可以轻松删除它。
任何帮助,将不胜感激。
谢谢。
substring
andsubstring_index
查找逗号并对其进行拆分。请参阅手册。将 @NAME 替换为您的实际值:
SELECT TRIM(SUBSTR(@NAME, LOCATE(",", @NAME) + 1)) AS prename, TRIM(SUBSTR(@NAME, 1, LOCATE(",", @NAME) - 1)) AS surename
这将提取 prename 和 surename 部分,现在您可以根据需要插入/修改数据。
不是您问题的答案,但在任何情况下我都不会这样做。您将失去任何可靠地区分姓氏和名字的机会。考虑以下名称:
Bridget St John
Boutros Boutros Ghali
Karl-Theodor Maria Nikolaus Freiherr von und zu Guttenberg
我建议保留单独的“姓氏”和“名字”列。您可以在输出时随意连接它们。
UPDATE table SET name2=CONCAT (TRIM(SUBSTR(name, LOCATE(",", name) + 1)), ' ', TRIM(SUBSTR(name, 1, LOCATE(",", name) - 1)))