2013-05-08 198 views
3

我已經非常複雜的數據,我插入postgresql和我使用雙美元($$)轉義。不過,我有一行以美元符號結尾並導致錯誤。 原始行像'dd^d\w=dd$',並且在逃脫時'$$dd^d\w=dd$$$'Postgresql逃脫美元符號

我該如何逃避這個特定的行?

回答

5

使用任何字符串雙美元裏面來區分它:

select $anything$abc$$anything$; 
?column? 
---------- 
abc$ 

insert是相似的:

insert into t (a, b) values 
($anything$abc$$anything$, $xyz$abc$$xyz$); 
INSERT 0 1 
select * from t; 
    a | b 
------+------ 
abc$ | abc$ 
+0

我在做一個插入選擇。 – zulq 2013-05-08 11:33:41

+0

@zulq插入是一樣的。見編輯的答案。 – 2013-05-08 11:36:27

+0

非常感謝。有用。 – zulq 2013-05-08 11:58:15

3

雖然Clodo阿爾是完全正確的,我認爲有你需要看的這另一個方面在:

你爲什麼要做自己的報價?通常應該通過編程語言的客戶端驅動程序使用參數化(「準備好」)語句。請參閱bobby tables以獲取常見語言的一些示例。使用參數化語句意味着您不必在意再做任何引用,數據庫客戶端驅動程序會爲您處理。

我想給你一個例子,但你還沒有提到你的客戶端語言/工具。

+0

我正在使用activerecord,並在此之前發佈瞭如何處理這些數據,但沒有提供解決方案。 – zulq 2013-05-08 16:48:20