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