最近,我們從MySQL更改爲PostgreSQL。大部分的查詢已被翻譯,除了用MySQL的REGEXP'關鍵字的那些:將列數據用作正則表達式匹配的模式
MySQL (prepared statement):
SELECT * FROM table WHERE ? REGEXP identifier;
我們有一個「表」,和一列被稱爲「標識符」。這個'標識符'列包含實際的正則表達式模式。
因此,不是在查詢中對正則表達式模式進行「硬編碼」,而是查找模式的標識符列。
在Postgresql中,我們需要使用'〜'關鍵字而不是'REGEXP'(僅限於MySQL),但對於Postgresql,我似乎無法從列中提取模式。
我試過沒有成功以下查詢:「*」用於測試目的,我創建了多項紀錄,其中的「標識符」列中包含
SELECT * FROM table WHERE 'test' ~ "identifier";
ERROR: invalid regular expression: parentheses() not balanced
SELECT * FROM table WHERE "identifier" ~ 'test';
-> no results
的值(匹配一切正則表達式),但我仍然沒有得到適當的結果。
幫助非常歡迎,謝謝!
爲什麼在引號中使用列名?嘗試沒有他們。 – sufleR
@ sufleR這不是問題。在postgresql中使用雙引號來指定列/表/模式/函數的確切名稱... –
我們需要查看您的實際正則表達式模式。請在問題中提供失敗的示例行或sqlfiddle。 –