我有一些記錄如下:
| 烏爾坦 | 描述 |
|---|---|
| 1432 | AMAN032 - 噴槍 |
| 1433 | BENANG156 - Sikat Pintu |
| 1434 | 奧利貝爾一號 AT-D 20W40 |
| 1435 | 補水 |
| 1436 | KABUR001 - 戈索克航空 |
| 1437 | Kabel 領帶 20 厘米 - 50 |
根據上表,我在欄位 desc 中有兩種格式的字串:
- 正確的格式,即 urutan 1432、1433、1436。
- 不正確的格式,即 urutan 1434、1435、1437
如您所見,正確的格式具有如下格式:
AMAN032 - Gunting
然后我分裂:
[AMAN][032] - [Gunting]
[a word][3 digits number][space][-][space][any words].
我的目標是我想在 WHERE 子句中使用 PosgreSQL REGEXP 選擇所有與正確格式不匹配的記錄(在我不知道哪個 urutan 的情況下)。所以上表的結果是 urutan 1434, 1435, 1437。
uj5u.com熱心網友回復:
嘗試使用以下查詢:
SELECT *
FROM tab
WHERE NOT desc_ ~ '^[A-Za-z] [0-9]{3} - [A-zA-Z ] $'
正則運算式解釋:
^: 字串的開始[A-Za-z]: 任何字母字符[0-9]{3}: 三位數-:空格 破折號 空格[A-zA-Z ]: 字母字符和空格的任意組合$: 字串結束
在這里試試。
注意:此正則運算式中的漏洞可能位于字母字符的最后一個組合中。您可以在提供的鏈接中使用它來包含或排除您想要/不想與該部分匹配的字符,或者分享有關如何組成該部分的更多詳細資訊,我可以嘗試改進模式匹配.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485679.html
標籤:sql 正则表达式 PostgreSQL where子句 正则表达式
