2013-04-06 21 views
6

PostGISでPostgreSQLを使用しています。私はこのようなクエリを実行しています:関数内のSQLクエリ

select st_geomfromtext('point(22 232)',432) 

これは問題なく動作します。しかし、今私は質問を通して価値を取りたいと思っています。例えば:ここで

select st_geomfromtext('point((select x from data_name where id=1) 232)' , 432) 

data_nameは、私が使用しているいくつかのテーブルでありx保存するいくつかの値。今度はquery insideが文字列として扱われ、値は返されません。
助けてください。

ERROR: syntax error at or near "select" 
+0

ヒント:どのようにあなたがPostgreSQLの2つの文字列を連結するんあなたはドロップイン交換が必要な場合は

select st_geomfromtext(NULL, 432)

:次に、あなたの代わりに、(何行)バック何も得ますか? – muratgu

+0

||文字列を連結するのに使用されますが、同じエラーがスローされます – Naman

+0

@muratguは '||'または関数を使用しています: 'concat' – Houari

答えて

2

これを試してみてください:

select st_geomfromtext('point(' || x || ' 232)', 432) from data_name where id=1 
0

PostGISには、ST_GeomFromTextよりも高速で機能ST_MakePointを持っています。

select ST_SetSRID(ST_MakePoint(x),432) from data_name where id=1; 
0

@muratgu answerは、一般的にを移動するための方法ですが、1マイナー注記:行がid = 1ために見つからないとき
サブクエリはあなたに異なる結果を取得します。

select st_geomfromtext('point(' 
         || (select x from data_name where id=1) 
         || ' 232)' , 432)