0

我有以下问题。

我的表,比如 tab1,具有如下名称列“姓氏,名字”。我想让它成为“FirstName LastName”列。

关于如何做到这一点的任何想法?请注意,没有逗号,但我想一旦我弄清楚如何实际翻转名字和姓氏,就可以轻松删除它。

任何帮助,将不胜感激。

谢谢。

4

4 回答 4

2
  • 最好将 name 列拆分为两个字段,FirstNameLastName,以便您可以以任何您想要的方式格式化它们,并且仍然按姓氏排序。
  • 使用substringandsubstring_index查找逗号并对其进行拆分。请参阅手册
于 2010-06-25T08:01:13.933 回答
1

将 @NAME 替换为您的实际值:

SELECT TRIM(SUBSTR(@NAME, LOCATE(",", @NAME) + 1)) AS prename, TRIM(SUBSTR(@NAME, 1, LOCATE(",", @NAME) - 1)) AS surename

这将提取 prename 和 surename 部分,现在您可以根据需要插入/修改数据。

于 2010-06-25T08:03:02.067 回答
0

不是您问题的答案,但在任何情况下我都不会这样做。您将失去任何可靠地区分姓氏和名字的机会。考虑以下名称:

Bridget St John
Boutros Boutros Ghali
Karl-Theodor Maria Nikolaus Freiherr von und zu Guttenberg

我建议保留单独的“姓氏”和“名字”列。您可以在输出时随意连接它们。

于 2010-06-25T08:11:58.503 回答
0
UPDATE table SET name2=CONCAT (TRIM(SUBSTR(name, LOCATE(",", name) + 1)), ' ', TRIM(SUBSTR(name, 1, LOCATE(",", name) - 1)))
于 2017-06-13T13:02:14.400 回答