2013-07-30 6 views
1

나는 여기에 비슷한 질문을했다 : 공간이있는 hstore 값. 그리고 사용자 : Clodoaldo Neto가 해결합니다. 이제 작은 따옴표가 포함 된 문자열로 다음 사례를 발견했습니다. 작은 따옴표가 붙은 hstore 값

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

나는

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

http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS를 읽어 일정한 달러 인용 문자열을 사용하여 그것을 시도하지만 바로 그것을 얻을 수 없었다.

작은 따옴표가 포함 된 문자열을 사용하여 postgresql hstore를 만드는 방법은 무엇입니까? 이 쿼리에는 더 많은 예외가있을 수 있습니다. 한 번에 모든 문제를 해결하는 방법?

답변

2

문자열 리터럴 안의 다른 작은 따옴표를 이스케이프하는 것과 같은 방식으로 포함 된 작은 따옴표를 이스케이프 처리 할 수 ​​있습니다. 당신은 PostgreSQL을 얘기하는 데 사용하는 무엇이든간에 인터페이스

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

이 인용하고 탈출 문제를 돌봐해야합니다 :

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

또는, 달러는 전체 문자열을 인용 할 수있다. 수동 문자열 논쟁을 사용하여 SQL을 작성하는 경우 드라이버의 인용 및 자리 표시 방법을 사용해야합니다.

두 번 인용 키와 공백, 쉼표 = s의 나>의 포함 값 :


hstore's internal parsing 키 큰 따옴표를 이해한다.

인용구대로 SQL 문자열 리터럴의 경우 hstore의 파서는 의미를 알 수 없습니다.

관련 문제