TRY_TO_GEOMETRY¶
입력을 구문 분석하고 GEOMETRY 형식의 값을 반환합니다.
이 함수는 TO_GEOMETRY 와 동일합니다. 단, TO_GEOMETRY가 오류를 반환할 때 이 함수는 NULL을 반환합니다.
- 참고 항목:
구문¶
다음 중 하나를 사용하십시오.
TRY_TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )
인자¶
필수:
varchar_expression
인자는 다음 형식 중 하나로 유효한 기하학적 오브젝트를 나타내는 문자열 식이어야 합니다.
WKT(well-known text).
16진수 형식의 WKB(well-known binary)(선행
0x
제외).EWKT(extended well-known text).
16진수 형식의 EWKB(extended well-known binary)(선행
0x
제외).GeoJSON.
binary_expression
인자는 WKB 또는 EWKB 형식의 이진 식이어야 합니다.
variant_expression
인자는 GeoJSON 형식의 OBJECT여야 합니다.
선택 사항:
srid
사용할 SRID의 정수 값입니다.
allow_invalid
TRUE인 경우 입력 형태가 유효하지 않고 복구할 수 없는 경우에도 함수가 GEOGRAPHY 또는 GEOMETRY 오브젝트를 반환하도록 지정합니다. 자세한 내용은 유효하지 않은 지리 공간 도형을 처리하는 방법 지정하기 섹션을 참조하세요.
반환¶
이 함수는 TO_GEOMETRY가 오류를 반환할 때 GEOMETRY 또는 NULL 유형의 값을 반환합니다.
사용법 노트¶
입력을 지원되는 적절한 형식(WKT, WKB, EWKT, EWKB, GeoJSON)으로 구문 분석할 수 없는 경우, NULL을 반환합니다.
GeoJSON, WKT 및 WKB 입력의 경우
srid
인자가 지정되지 않으면 결과 GEOMETRY 오브젝트의 SRID가 0으로 설정됩니다.
예¶
이는 VARCHAR 데이터가 있는 TRY_TO_GEOMETRY 함수의 간단한 사용법을 보여줍니다.
SELECT TRY_TO_GEOMETRY('INVALID INPUT');
+----------------------------------+
| TRY_TO_GEOMETRY('INVALID INPUT') |
|----------------------------------|
| NULL |
+----------------------------------+
임시 테이블을 만들고 GEOMETRY 값이 포함된 행을 삽입합니다.
CREATE OR REPLACE TEMP TABLE demo_to_geometry AS
SELECT
1 AS id,
'POINT(10 20)' AS wkt_col, -- VARCHAR (WKT)
'SRID=32633;POINT(500000.0 4649776.22)' AS ewkt_col, -- VARCHAR (EWKT)
ST_ASWKB(TO_GEOMETRY('LINESTRING(0 0, 1 1)')) AS wkb_bin_col, -- BINARY (WKB)
PARSE_JSON('{"type":"Point","coordinates":[10,20]}') AS geojson_col, -- VARIANT (GeoJSON)
TO_GEOGRAPHY('POINT(-122.35 37.55)') AS geog_col, -- GEOGRAPHY
'POLYGON((0 0,2 2,2 0,0 2,0 0))' AS invalid_wkt_col, -- invalid shape
0 AS srid0, -- SRID columns to show positional args
3857 AS srid_col,
TRUE AS allow_true, -- allow_invalid flags from columns
FALSE AS allow_false
UNION ALL
SELECT
2,
'LINESTRING(0 0, 10 10)',
'SRID=32633;POINT(389866.35 5819003.03)',
ST_ASWKB(TO_GEOMETRY('POINT(2 3)')),
PARSE_JSON('{"type":"LineString","coordinates":[[0,0],[1,1]]}'),
TO_GEOGRAPHY('LINESTRING(-124.2 42,-120.01 41.99)'),
'POLYGON((0 0,1 1,1 0,0 1,0 0))',
0,
3857,
TRUE,
FALSE;
이 테이블에는 TO_GEOMETRY 함수가 다음 형식의 입력으로 수락하는 데이터 타입의 열이 있습니다.
VARCHAR(WKT/WKB 및 hex/EWKT/EWKB/GeoJSON)
BINARY(WKB/EWKB)
VARIANT(GeoJSON 오브젝트)
GEOGRAPHY
선택적 srid
및 allow_invalid
값은 이러한 형식을 따를 수 있습니다. ST_ASWKB , ST_ASBINARY 함수는 유효한 WKB BINARY 값을 생성합니다.
다음 예제에서는 invalid_wkt_col
열의 VARCHAR 값을 GEOMETRY 값으로 변환하려고 시도하지만 형태가 유효하지 않습니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TRY_TO_GEOMETRY(invalid_wkt_col) AS g_or_null
FROM demo_to_geometry;
+----+-----------+
| ID | G_OR_NULL |
|----+-----------|
| 1 | NULL |
| 2 | NULL |
+----+-----------+