【问题标题】:MySQL split single columnMySQL拆分单列
【发布时间】:2013-02-12 14:40:20
【问题描述】:

我认为这很容易……也许不会。我有一个带有“全名”的表,我想将名字和姓氏分成 2 列(fname 和 lname)。

下面的语法给了我想要的数据:

SELECT 
`fullname` , 
SUBSTRING_INDEX( SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1) AS fname, 
SUBSTRING_INDEX(`fullname` ,' ', 1)AS lname
FROM MyTable

...但是我该如何获取 'fname' 和 'lname' 字段并将它们保存到同一个表中的不同列中?

[示例数据 -- 如果人名是 John Michael Jones,则“全名”字段如下所示:JONES JOHN MICHAEL]

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以只更新表并将列设置为fullname 的子字符串

    update MyTable
    set fname = SUBSTRING_INDEX(SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1),
        lname = SUBSTRING_INDEX(`fullname` ,' ', 1)
    

    【讨论】:

      【解决方案2】:

      如果要对同一张表执行更新,可以使用如下:

      update mytable
      set fname = SUBSTRING_INDEX( SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1), 
        lname = SUBSTRING_INDEX(`fullname` ,' ', 1)
      

      SQL Fiddle with Demo

      【讨论】:

        【解决方案3】:

        您想更新为名字和姓氏值,那么您需要使用更新:

        update MyTable
        set fname = SUBSTRING_INDEX( SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1), 
          lname = SUBSTRING_INDEX(`fullname` ,' ', 1)
        

        如果你想设置为大写,那么用户大写函数以及

         update MyTable
            set fname = upper(SUBSTRING_INDEX( SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1)), 
              lname = upper(SUBSTRING_INDEX(`fullname` ,' ', 1))
        

        【讨论】:

          猜你喜欢
          • 2021-03-25
          • 2017-05-20
          • 2010-11-08
          • 1970-01-01
          • 2022-12-10
          • 1970-01-01
          • 2019-03-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多