2013-07-30 31 views
1

我在這裏問了類似的問題:hstore值與空格。並由用戶解決:Clodoaldo Neto。現在我遇到了包含單引號的字符串的下一個案例。單引號hstore值

SELECT 'k=>"name", v=>"St. Xavier's Academy"'::hstore; 

我嘗試了用美元報價字符串常量通過閱讀http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS

SELECT 'k=>"name", v=>$$St. Xavier's Academy$$'::hstore; 

但我無法得到它的權利。

如何使用包含單引號的字符串來創建postgresql hstore? 這個查詢似乎有更多這樣的例外可能。如何一次解決所有問題?

回答

2

您可以像使用字符串文字中的任何其他單引號一樣轉義嵌入的單引號:double it。

SELECT 'k=>"name", v=>"St. Xavier''s Academy"'::hstore; 
-- ------------------------------^^ 

或者,你可以引述美元整串:

SELECT $$k=>"name", v=>"St. Xavier's Academy"$$::hstore; 

你用交談的PostgreSQL無論界面應該利用這些引號和轉義問題護理。如果你使用手動字符串來構建你的SQL,那麼你應該使用你的驅動程序的引用和佔位符方法。


hstore's internal parsing理解圍繞鍵雙引號:

雙引號鍵和包括空格,逗號,= S或>價值觀。

正如您所述,美元報價是針對SQL字符串文字的,hstore的分析器並不知道它們的含義。