我需要在一个用短划线分隔的单元格中拆分数据,并将其放入单独的列中。我遇到的问题是可能有不止一个-
因此,使用下表中来自-的原始数据,我需要将sic_orig中第一个-之前的所有内容和sic_num中第一个-之后的所有内容放在sic_desc中。我相信这很容易,但我似乎找不到任何明确的信息。
这就是我的表应该是这样的,sic_orig是源,sic_numsic_desc是从sic_orig中提取的数据:

              sic_orig                |  sic_num  |        sic_desc
---------------------------------------------------------------------------
  509406 - Jewelers-Wholesale         |   509406  |  Jewelers-Wholesale
--------------------------------------|-----------|------------------------
  506324 - Burglar Alarm Systems      |   506324  |  Burglar Alarm Systems
--------------------------------------|-----------|------------------------
  502317 - Picture Frames-Wholesale   |   502317  |  Picture Frames-Wholesale

此代码有效,但仅当存在两个-并且某些单元格可能有1、2或3个-时才有效
 UPDATE test_tbl_1
    SET sic_num = SUBSTRING_INDEX(`sic_orig`, '-', 1),
        sic_desc = SUBSTRING_INDEX(`sic_orig`, '-', -2);

如何分割第一个-之前和第一个-之后的所有内容?

最佳答案

可以使用SUBSTR()和LOCATE()函数的组合来帮助分割字符串:

UPDATE test_tbl_1
SET sic_num  = SUBSTR(sig_orig, 1, LOCATE('-', sig_orig) - 1),
    sic_desc = SUBSTR(sig_orig, LOCATE('-', sig_orig) +  1) ;

单击here获取MySQL字符串函数。

关于mysql - 如何使用MySQL分割所有内容-(破折号),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39581561/

10-13 02:35