根据多个单词将字符串分成两个字段

时间:2019-01-31 21:11:54

标签: mysql

我的表格名称中包含以下列:STAT 如果有人可以协助编写mysql脚本,那将很有帮助 我想将字符串分成两列。但是,仅应根据最后一个字(即区域,如下面的示例所示)进行拆分。 如果该地区是北美地区,则存在一个例外,则应考虑最后两个词来进行拆分,请参见下文 该脚本应将新列添加到名为STAT的现有表中,或添加到新表中。

---------------------
Name   
---------------------
P1 xx ASPAC   
P1 yy EMEA
P1 zz uu EMEA 
P2 oouu_xsh-s EMEA
P2 xx tt North America  


---------------------
P2           Region
---------------------
P1 xx          ASPAC   
P1 yy          EMEA
P1 zz uu       EMEA 
P2 oouu_xsh-s  EMEA
P2 xx tt       North America  

1 个答案:

答案 0 :(得分:1)

如果您使用的是MySQL 8.0,则可以使用import re with open('./samplestring.txt') as f: header =[] nonheader = [] yourString = f.read() for line in content.splitlines(): if(re.match('(^[A-Z]?-?[A-Z]:)|(^[A-Z]\.)',line.lstrip())): header.append(line) else: nonheader.append(line) 函数使用正则表达式拆分字符串。

正则表达式REGEXP_REPLACE()将字符串分成两部分:字符串最后一个空格之前的所有内容都将移至特殊变量^(.*) (.*)$,最后一个空格之后的所有内容均将移至$1。当字符串以$2结尾时,需要特别注意。

考虑:

North America
name                   | P2            | Region       
:--------------------- | :------------ | :------------
P1 xx ASPAC            | P1 xx         | ASPAC        
P1 yy EMEA             | P1 yy         | EMEA         
P1 zz uu EMEA          | P1 zz uu      | EMEA         
P2 oouu_xsh-s EMEA     | P2 oouu_xsh-s | EMEA         
P2 xx tt North America | P2 xx tt      | North America

Demo on DB Fiddle