Mysql

如何用正則表達式查詢mysql表?

  • October 17, 2019

我正在使用正確的正則表達式,已經用其他工具測試過。但是在mysql中似乎不能正常工作。說這個數據:

在此處輸入圖像描述

我想選擇所有以 2 個非數字後跟一個點開始的記錄,然後是一個數字,後跟一個 .00 序列(例如 DE.1.00.00.00.00)

\D{2}\.\d?\.0{2}.0{2}.0{2}.0{2}

以上單獨使用通常有效。但是在 mysql 上,像下面這樣的簡單查詢是行不通的。它將返回一個包含所有列且沒有任何錯誤但也沒有任何值的表。為什麼?

SELECT *
FROM V35_CATEGORIE cat
WHERE cat.CategoriaCodice REGEXP '\D{2}\.\d?\.0{2}.0{2}.0{2}.0{2}'

我自己回答。總之,上面的sql語法是正確的,那麼如何用正則表達式查詢mysql表呢?就像我做的一樣。

它不起作用的原因是正則表達式語法對於 mysql 來說太“複雜”了。我發現 mysql 不支持標準正則表達式的全部語法可能性。我必須使用更簡單的符號/結構。因此,例如,\D{2}我可以使用[A-Z]{2}而不是 \d,因為我知道我需要 1 或 2,所以我可以使用[1,2]?. 像下面這樣的語法將在 mysql 中完美地匹配像 ‘IT.1.12.00.00.00’ 這樣的字元串:

[A-Z]{2}\.[1,2]?\.[1-9][0-9](\.00){3}

使用完整的正則表達式語法,我可以使用前瞻斷言和其他構造,但無論如何,現在為了我的需要,我可以使用簡單的“舊”語法。

引用自:https://dba.stackexchange.com/questions/251261