sql >> Database teknologi >  >> RDS >> PostgreSQL

Få dobbelt præcisionsværdier fra inkonsistente strenge til brug af ST_GeomFromText (PostGIS)

Ifølge dokumenterne , ST_GeomFromText kræver (tekst, heltal) , ikke (dobbelt præcision) .

Alt du skal gøre er CONCAT() og det burde virke.

Løsning

ST_GeomFromText(CONCAT('LINESTRING(', "DinTabel"."Din streng", ')'), 4326); 

Til din test

VÆLG ST_GeomFromText('LINESTRING(3.985 58.934, 4.56 61.2323, 5.4 63.234355, 3.25982 59.309)', 4326), CONCAT('T1)STRING".", ST_T1)STRING('),ST_Geomt1.String.',STrom (CONCAT('LINESTRING(', "T1"."C1", ')'), 4326)FROM ( SELECT '3.985 58.934, 4.56 61.2323, 5.4 63.234355, 3.25982 59.309, 235633, 235633, 235633, 435633, 435633, 435633, 435633 "; 

Bare for sjov

Jeg besluttede at konvertere din streng til den oprindeligt anmodede DOUBLE PRECISION og så tilbage i en streng... slutresultatet er det samme som ovenfor, men det gør det med meget mere arbejde. Ikke desto mindre er det, hvad du bad om.

SELECT ST_GeomFromText(CONCAT('LINESTRING(', (SELECT STRING_AGG(ARRAY_TO_STRING("Linje"."Points", ' '), ',') FRA REGEXP_MATCHES(ARRAY_TO_STRING(REGEXP_SPLIT_TO_ARRAY("T1"." C1", E', | ')::DOUBLE PRÆCISION[], ' '), '(\d*\.\d*) (\d*\.\d*)', 'g') SOM "Linje "("Punkt")), ')'), 4326) FROM ( VÆLG '3.985 58.934, 4.56 61.2323, 5.4 63.234355, 3.25982 59.309, 4.5632 58.32423C "Tekst1"; TEXT AS1";


  1. Hvordan tilføjer jeg streng med automatisk stigningsværdi i SQL Server?

  2. Mac psql/readline - bibliotek ikke indlæst

  3. SQL For at kontrollere om lokalet er ledigt mellem datoerne

  4. tjek for gyldig dato, som er erklæret i varchar2