ArcGIS Online의 표준화된 SQL 함수

ArcGIS Online에서는 개발자가 호스팅 피처 레이어를 쿼리할 때 표준화된 SQL 쿼리를 사용해야 합니다. 이를 통해 개발자와 앱은 더욱 쉽게 호스팅 피처 레이어를 쿼리하고 SQL 주입 공격을 방지할 수 있습니다. 모든 ArcGIS 응용프로그램에서는 표준 SQL 쿼리가 자동으로 지원됩니다.

표준화된 쿼리에 대한 제한 사항

  • 표준화된 쿼리는 전체 기관에 적용되며 일부 레이어에 비활성화할 수 없습니다.
  • 표준화된 쿼리는 여러 작업공간 사이의 연결부에서 지원되지 않습니다.
  • POP_2010 = (SELECT min(POP_2010) FROM counties과(와) 같은 where 절 형태의 서브 쿼리는 지원되지 않습니다.
  • 또한 데이터베이스 서비스(예시: Microsoft Azure SQL Database)의 쿼리가 지원되지 않습니다.

ArcGIS Online에서 지원되는 SQL 함수

앱 개발자가 현재 데이터베이스별 where 절 구문을 사용 중이라면 ArcGIS Online에서 지원하는 일반 SQL 구문을 사용하도록 앱 코드의 where 절을 업데이트해야 합니다. 다음 테이블에는 지원되는 SQL 함수와 각각의 구문이 나와 있습니다. 다음 함수와 구문을 앱에서 사용하는 경우 ArcGIS Online에서는 해당 함수와 구문을 피처 레이어에서 사용하는 데이터베이스 사양에 맞게 변환합니다.

날짜 함수

함수설명

CURRENT_DATE()

협정 세계시(UTC) 시간의 현재 날짜를 반환합니다.

클라이언트에 나타나는 내용은 사용 중인 클라이언트에 따라 다릅니다. ArcGIS Online에서 날짜는 기관 또는 프로필의 표준 시간대로 표시됩니다.

CURRENT_TIME()

현재 UTC 날짜와 시간(시, 분, 초)을 반환합니다.

클라이언트에 나타나는 내용은 사용 중인 클라이언트에 따라 다릅니다. ArcGIS Online에서 시간은 기관 또는 프로필의 현지 시간대로 표시됩니다.

CURRENT_TIMESTAMP()

현재 UTC 날짜와 시간(시, 분, 초, 밀리초)을 반환합니다.

클라이언트에 나타나는 내용은 사용 중인 클라이언트에 따라 다릅니다. ArcGIS Online에서 시간은 기관 또는 프로필의 현지 시간대로 표시됩니다.

EXTRACT(<unit> FROM <date>)

지정된 <date>의 싱글파트(<unit>)를 반환합니다. 가능한 <unit> 값에는 년, 월, 일, 시간, 분이 포함되지만 이에 국한되지는 않습니다.

예시

  • EXTRACT(MONTH FROM 12/21/2016) - 12를 반환합니다.
  • EXTRACT(DAY FROM 12/21/2016 12:00) - 21을 반환합니다.
  • EXTRACT(HOUR FROM 12/21/2016 15:00) - 15를 반환합니다.

숫자 함수

함수설명

ABS(<number>)

지정하는 숫자 식의 절대값(양수)을 반환합니다.

CEILING(<number>)

지정된 숫자보다 크거나 동일한 가장 작은 정수를 반환합니다.

예시

  • CEILING(12.93) - 결과는 13입니다.

COS(<number>)

<number>의 삼각법 코사인을 반환하며 이는 라디안의 각도로 간주됩니다.

CAST(<number> AS FLOAT | INT)

숫자를 다른 유형으로 변환합니다. FLOAT는 지정된 숫자를 더블로 변환하고 INT는 정수로 변환합니다.

FLOOR(<number>)

숫자보다 작거나 동일한 가장 큰 정수를 반환합니다.

예시

  • FLOOR(12.93) - 결과는 12입니다.

LOG(<number>)

지정된 숫자의 자연 로그를 반환합니다.

LOG10(<number>)

지정된 숫자의 기본 -10 로그를 반환합니다.

MOD(<number>, <n>)

피제수(<number>)를 제수<n>로 나눈 후 나머지를 반환합니다. <n> 및 <number>는 둘 다 정수여야 합니다.

예시는 다음과 같습니다.

  • MOD(10, 4) - 결과는 2입니다.
  • MOD(CAST(DBLFIELD AS INT), 4) - DBLFIELD은(는) 더블 필드이므로 더블에서 정수로 값을 변환하는 데 CAST 함수가 필요합니다.

NULLIF(<number>, <value>)

지정한 숫자가 지정된 값과 동일한 경우 null을 반환합니다. NULLIF는 일반적으로 <value>를 0으로 설정하여 0으로 나누기 오류를 방지하는 데 사용됩니다.

계산에서 인수 중 하나에 null 필드 값이 있는 경우 계산 결과는 null이 됩니다.

예를 들어 더블 필드를 계산한다고 가정해 보겠습니다(TOTALPOPPOP18로 나눔). 어떤 피처에 POP18 값이 0인 경우 계산에는 0으로 나누기 오류가 발생합니다. 필터를 생성하여 POP18이(가) 0인 경우 레코드를 숨긴 다음 계산을 수행할 수 있습니다. 간단한 방법은 NULLIF를 사용하는 것입니다.

  • TOTALPOP / NULLIF(POP18, 0) - POP18이(가) 0이면 null을 반환하고 그렇지 않으면 TOTALPOP / POP18의 값을 반환합니다.

POWER(<number> , <y>)

지정한 숫자의 값을 지정된 거듭제곱으로 반환합니다(<y>).

ROUND(<number> , <length>)

지정된 길이로 지정하는 숫자를 반올림합니다.

<length>에 양수를 사용하면 숫자는 <length>에 따라 지정된 소수점에서 반올림됩니다. <length>가 음수이면 지정된 <number>가 소수점의 왼쪽에서 반올림됩니다.

예시

  • ROUND(10.9934,2) - 10.99를 반환합니다.
  • ROUND(10.9964,2) - 11.00을 반환합니다.
  • ROUND(111.0,-2) - 100.00을 반환합니다.

SIN(<number>)

지정된 <number>의 사인값을 반환하며, 이는 라디안의 각도로 간주됩니다.

TAN(<number>)

지정된 <number>의 탄젠트 값을 반환하며, 이는 라디안의 각도로 간주됩니다.

TRUNCATE(<number>,<decimal_place>)

지정된 <decimal_place>에서 <number>를 버립니다.

양의 <decimal_place>는 지정된 소수점까지 버립니다. <decimal_place>가 음수이면 <number>가 소수점의 왼쪽에서 버립니다.

예시

  • TRUNCATE(111.996,2) - 111.99를 반환합니다.
  • TRUNCATE(111.996,-2) - 100.00을 반환합니다.

문자열 함수

함수설명

CHAR_LENGTH(<string>)

지정된 문자열의 문자 수를 반환합니다. 결과는 정수입니다.

예시

  • CHAR_LENGTH('Redlands') - 결과는 8입니다.

CONCAT(<string1>, <string2>)

두 개의 문자열 값을 연결합니다.

두 문자열만 제공할 수 있습니다. 두 개가 넘는 문자열을 연결하려면 아래와 같이 연속 CONCAT 함수를 중첩합니다.

예시

  • CONCAT('A', 'B') - 결과는 'AB'입니다.
  • CONCAT('A', CONCAT(':', 'B')) - 결과는 'A:B'입니다.

Null 값은 빈 문자열로 변환됩니다.

POSITION(<substring>, <string>)

지정하는 문자열에서 하위 문자열이 처음 나타나는 위치를 반환합니다. 지정한 하위 문자열이 발견되지 않으면 결과는 0입니다.

예시

  • POSITION('boat', 'Sailboat') - 결과는 5입니다.
  • POSITION('motor', 'Sailboat') - 결과는 0입니다.

SUBSTRING(<string>, <start>, <length>)

문자열 값의 일부를 반환합니다. <start>는 반환된 문자의 시작 위치를 지정하는 정수 색인이고 <length>는 반환되는 문자의 수입니다.

예시

  • SUBSTRING('Sailboat', 5, 4) - 결과는 'boat'입니다.
  • SUBSTRING('Sailboat', 1, 4) - 결과는 'Sail'입니다.
  • SUBSTRING('Sailboat', 5, 100) - 결과는 'boat'입니다.

TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>)

지정하는 문자열에서 모든 선행 또는 후행 공백이 제거된 문자열을 반환합니다.

예시

  • TRIM(BOTH ' ' FROM ' San Bernardino ') - 결과는 'San Bernardino'입니다.

두 번째 인수는 중간에 공백이 있는 작은따옴표 두 개임을 유의해야 합니다.

UPPER(<string>)

모든 문자가 대문자로 변환된 문자열을 반환합니다.

예시

  • UPPER('Sailboat') - 결과는 'SAILBOAT'입니다.

LOWER(<string>)

모든 문자가 소문자로 변환된 문자열을 반환합니다.

예시

  • LOWER('Sailboat') - 결과는 'sailboat'입니다.