如何更改mysql中名称字段的结构

如何更改mysql中名称字段的结构,mysql,string,names,flip,Mysql,String,Names,Flip,我有以下问题 我的表,比如tab1,有name列,如下所示“LastName,FirstName”。我想使列变成“FirstName LastName” 关于如何做到这一点有什么想法吗?请注意,这里没有逗号,但我想,一旦我知道如何实际翻转名字和姓氏,就可以很容易地删除逗号 任何帮助都将不胜感激 谢谢。 最好将name列拆分为两个字段,FirstName和LastName,这样您就可以按任何方式格式化它们,并且仍然可以按姓氏排序 使用substring和substring\u index查找逗号并

我有以下问题

我的表,比如tab1,有name列,如下所示“LastName,FirstName”。我想使列变成“FirstName LastName”

关于如何做到这一点有什么想法吗?请注意,这里没有逗号,但我想,一旦我知道如何实际翻转名字和姓氏,就可以很容易地删除逗号

任何帮助都将不胜感激

谢谢。

  • 最好将name列拆分为两个字段,FirstName和LastName,这样您就可以按任何方式格式化它们,并且仍然可以按姓氏排序
  • 使用
    substring
    substring\u index
    查找逗号并将其拆分。看
      • 最好将name列拆分为两个字段,FirstName和LastName,这样您就可以按任何方式格式化它们,并且仍然可以按姓氏排序
      • 使用
        substring
        substring\u index
        查找逗号并将其拆分。看

      将@NAME替换为您的真实价值:

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

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

      用实际值替换@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
      

      我建议将“姓氏”和“名字”列分开。您可以在输出时随意连接它们。

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

      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)))
      

      我建议将“姓氏”和“名字”列分开。当您进行输出时,您可以随心所欲地连接它们。

      是否要重新构造表,或更改表的输出方式?确实要执行此操作吗?必须更改表结构,而不是字段。它必须是两个单独的字段是否要重新构造表,或者是否要更改其输出方式?确实要执行此操作吗?必须更改表结构,而不是字段。它必须是两个独立的字段
      UPDATE table SET name2=CONCAT (TRIM(SUBSTR(name, LOCATE(",", name) + 1)), ' ', TRIM(SUBSTR(name, 1, LOCATE(",", name) - 1)))