2013-04-06 24 views
6

Używam PostgreSQL z PostGis. Wykonuję kwerendę taką jak ta:Zapytanie SQL wewnątrz funkcji

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

Działa dobrze. Ale teraz chcę wziąć wartość poprzez zapytanie. na przykład:

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

Tutaj data_name jest jakaś tabela używam i x przechowuje pewne wartości. Teraz zapytanie wewnątrz jest traktowane jako ciąg znaków i nie zwraca wartości.
Proszę o pomoc.

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

podpowiedź: Jak złączyć dwa ciągi w PostgreSQL? – muratgu

+0

|| jest używany do łączenia łańcuchów, ale wciąż ten sam błąd jest zgłaszany – Naman

+0

@muratgu za pomocą '||' lub funkcji: 'concat' – Houari

Odpowiedz

2

Spróbuj tego:

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

postgis posiada funkcję ST_MakePoint który jest szybszy niż ST_GeomFromText.

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

Podczas @muratgu answer jest generalnie droga, jeden drobny uwaga:
Podzapytanie dostaje się inny wynik gdy nie zostanie znaleziony wiersz dla id = 1. Wtedy masz nic do tyłu (nie wiersz), zamiast:

select st_geomfromtext(NULL, 432)

Jeśli potrzebujesz zamiennik:

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