我有以下的sql命令,我需要在PostgreSQL中隱藏圓括號,我該怎麼做?SQL - 如何在PostgreSQL中隱藏圓括號
SELECT rua
FROM logradouros
WHERE rua ~* 'Antonio De Sant\'Ana Galvao Av Frei (Av 01 Parte A)'
LIMIT 100;
我有以下的sql命令,我需要在PostgreSQL中隱藏圓括號,我該怎麼做?SQL - 如何在PostgreSQL中隱藏圓括號
SELECT rua
FROM logradouros
WHERE rua ~* 'Antonio De Sant\'Ana Galvao Av Frei (Av 01 Parte A)'
LIMIT 100;
使用反斜槓來轉義括號。請注意,如果standard_conforming_strings參數設置爲off(這是默認行爲,直到PostgreSQL 9.1),則需要使用兩個反斜槓\\
。
一般有三種方法如何逃脫括號:
'pattern'
語法,這是依賴於standard_conforming_strings設置E'pattern'
$$pattern$$
或$sometext$pattern$sometext$
第一個是標準的SQL(特別是standard_conforming_strings),其它的是PostgreSQL擴展。選擇你喜歡的任何方法。
這裏有一些例子:
SET standard_conforming_strings = 0;
SELECT
'Antonio De Sant''Ana Galvao Av Frei (Av 01 Parte A)'
~*
'Antonio De Sant\'Ana Galvao Av Frei \\(Av 01 Parte A\\)'
SET standard_conforming_strings = 1;
SELECT
'Antonio De Sant''Ana Galvao Av Frei (Av 01 Parte A)'
~*
'Antonio De Sant''Ana Galvao Av Frei \(Av 01 Parte A\)'
SELECT
'Antonio De Sant''Ana Galvao Av Frei (Av 01 Parte A)'
~*
E'Antonio De Sant\'Ana Galvao Av Frei \\(Av 01 Parte A\\)'
SELECT
'Antonio De Sant''Ana Galvao Av Frei (Av 01 Parte A)'
~*
$$Antonio De Sant'Ana Galvao Av Frei \(Av 01 Parte A\)$$
SET standard_conforming_strings = default;
試試這個:
SELECT rua from logradouros where rua ~* E'Antonio De Sant\'Ana Galvao Av Frei \(Av 01 Parte A\)' limit 100;
參考:http://www.postgresql.org/docs/8.2/static/sql-syntax-lexical.html
一般來說,美元報價是你最好的選擇。注意:
SELECT $STR$Antonio De Sant\'Ana Galvao Av Frei (Av 01 Parte A)$STR$;
-----------------------------------------------------
Antonio De Sant\'Ana Galvao Av Frei (Av 01 Parte A)
(1 row)
雖然每隔響應幫助,我只是覺得用引號功能是這樣做的「正確」的方式。
從docs:
的quote_nullable(字符串文本)文本返回適當引用用作一個字符串在SQL語句中字符串字面量給定的字符串。嵌入式單引號和反斜槓適當加倍。請注意,quote_literal在null輸入時返回null;如果參數可能爲null,則quote_nullable通常更合適。另見例39-1。的quote_nullable(E'O \ 'Reilly的') 'O''Reilly'
只使用2 '
'
select * from games where name = 'Ahmed''s Salah'
反斜槓(ES)爲我
沒有工作而對於正則表達式,你必須在括號前面使用雙反斜線!
例如爲:
select regexp_matches('FOREIGN KEY (user_transaction_id) REFERENCES landing.user_transactions(id)', E'FOREIGN KEY \\((.*)\\) REFERENCES (.*)\\((.*)\\)', 'g');
結果:
"{user_transaction_id,landing.user_transactions,id}"