假设我有一个返回值集的表,
+--------------------------+
| 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
任何其他变通办法或快捷方式?我可能最终宣布所有可能的情况?
答案 0 :(得分:2)
第2项:
UPDATE tbl
SET string = SUBSTRING_INDEX(mycol, '.', -1),
mycol = SUBSTRING_INDEX(mycol, '.', 1) ;
项目1无法在MySQL中完成,但可能可以使用MariaDB及其REGEXP_REPLACE
或REGEXP_SUBSTR
来完成。