带分隔符的

时间:2017-04-03 11:06:06

标签: mysql regex select substring

假设我有一个返回值集的表,

+--------------------------+
|         MyColumn         |
+--------------------------+
| some string 929190. here |
| basic 092019. test       |
| lorem i 092988.          |
| 029109magic. lorem ipsum |
+--------------------------+

我需要做的是从该表中选择以下规则 1)如果数字在前面有空格并以“。”结尾。获取数字并删除剩余的值 2)在“。”之后得到文本。并将其放置到新列

+--------------------------+-------------+
|         MyColumn         |   string    |
+--------------------------+-------------+
| 929190                   | here        |
| 092019                   | test        |
| 092988                   |             |
| 029109magic              | lorem ipsum |
+--------------------------+-------------+

我设法做了一件,但它对特定情况只有好处。

select (CASE
    WHEN MyColumn REGEXP '([0-9]{7}.$)' THEN SUBSTR(MyColumn, 8, 6)
    ) from TableTest

任何其他变通办法或快捷方式?我可能最终宣布所有可能的情况?

1 个答案:

答案 0 :(得分:2)

第2项:

UPDATE tbl
     SET string = SUBSTRING_INDEX(mycol, '.', -1),
         mycol  = SUBSTRING_INDEX(mycol, '.',  1) ;

项目1无法在MySQL中完成,但可能可以使用MariaDB及其REGEXP_REPLACEREGEXP_SUBSTR来完成。