【问题标题】:MYSQL substring with delimiters带分隔符的 MYSQL 子字符串
【发布时间】:2017-08-28 05:22:29
【问题描述】:

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

+--------------------------+
|         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

还有其他解决方法或捷径吗?我最终可能会声明所有可能的情况?

【问题讨论】:

  • 很好,它对我有用,而不会逃脱点。感谢您的反馈。

标签: mysql regex select substring


【解决方案1】:

第 2 项:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多