Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于多个单词将字符串拆分为两个字段_Mysql_Sql_Regex_Database_String - Fatal编程技术网

Mysql 基于多个单词将字符串拆分为两个字段

Mysql 基于多个单词将字符串拆分为两个字段,mysql,sql,regex,database,string,Mysql,Sql,Regex,Database,String,我的表名中有以下列:STAT 如果有人能帮助编写mysql脚本,这将是很有帮助的 我想把字符串分成两列。但是,分割应仅基于最后一个词,即可以在下面的示例中看到的区域。 有一个例外,如果该地区是北美,则应考虑最后两个词进行拆分,见下文 脚本应将新列添加到名为:STAT的现有表或新表中 --------------------- Name --------------------- P1 xx ASPAC P1 yy EMEA P1 zz uu EMEA P2 oouu_xsh-s E

我的表名中有以下列: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  

如果您使用的是MySQL 8.0,那么可以使用
REGEXP\u REPLACE()
函数将进程拆分为一个REGEXP字符串

Regex
^(.*)(.*)$
将字符串一分为二:字符串中最后一个空格之前的所有内容都将转到特殊变量
$1
,最后一个空格之后的所有内容都将转到
$2
。当字符串以
北美
结尾时,需要特别小心

考虑:

WITH data AS (
    SELECT 'P1 xx ASPAC' name UNION SELECT 'P1 yy EMEA' UNION SELECT 'P1 zz uu EMEA'
    UNION SELECT 'P2 oouu_xsh-s EMEA' UNION SELECT 'P2 xx tt North America'
)
SELECT 
    name, 
    CASE 
        WHEN name like '% North America' THEN REPLACE(name, ' North America', '') 
        ELSE REGEXP_REPLACE(name, '^(.*) (.*)$', '$1') 
    END P2,
    CASE 
        WHEN name like '% North America' THEN 'North America' 
        ELSE REGEXP_REPLACE(name, '^(.*) (.*)$', '$2') 
    END Region
FROM data
名称| P2 |区域 :--------------------- | :------------ | :------------ 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北美| P2 xx tt北美

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