SnowConvert AI - SQL Server-Azure Synapse - 기본 제공 함수

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

기본 제공 함수 및 그와 동등한 Snowflake 함수에 대한 자세한 내용은 [일반적인 기본 제공 함수](../general/ built-in-functions.md)도 참조하세요.

집계

TransactSQL

Snowflake

참고

TransactSQL

Snowflake

참고

APPROX_COUNT_DISTINCT

APPROX_COUNT_DISTINCT

AVG​

AVG

CHECKSUM_AGG

*정의 예정

COUNT

COUNT

COUNT_BIG

*정의 예정

GROUPING

GROUPING

GROUPING_ID

GROUPING_ID

MAX

MAX

MIN

MIN

STDEV

STDDEV, STDEV_SAMP

STDEVP

STDDEV_POP

SUM

SUM

VAR

VAR_SAMP

VARP

VAR_POP​

분석

TransactSQL

Snowflake

참고

CUME_DIST

CUME_DIST

FIRST_VALUE

FIRST_VALUE

LAG

LAG

LAST_VALUE

LAST_VALUE

LEAD

LEAD

PERCENTILE_CONT

PERCENTILE_CONT

PERCENTILE_DISC

PERCENTILE_DISC

PERCENT_RANK

PERCENT_RANK

데이터 정렬

TransactSQL

Snowflake

참고

COLLATIONPROPERTY

*정의 예정

TERTIARY_WEIGHTS

*정의 예정

구성

TransactSQL

Snowflake

참고

​@@DBTS

*정의 예정

@@LANGID

*정의 예정

@@LANGUAGE

*정의 예정

@@LOCK_TIMEOUT

*정의 예정

@@MAX_CONNECTIONS

*정의 예정

@@MAX_PRECISION

*정의 예정

@@NESTLEVEL

*정의 예정

@@OPTIONS

*정의 예정

@@REMSERVER

*정의 예정

@@SERVERNAME

CONCAT(’app.snowflake.com’, CURRENT_ACCOUNT( ))

@@SERVICENAME

*정의 예정

@@SPID

*정의 예정

@@TEXTSIZE

*정의 예정

@@VERSION

*정의 예정

CURRENT_VERSION 을 사용하여 모방 가능

변환

TransactSQL

Snowflake

참고

CAST

CAST

<p>값이 숫자가 아닌 경우 NULL 을 반환하고, 그렇지 않으면 숫자 값을 해당 반환값으로 반환합니다.<br>&#x3C;, >, =, &#x3C;> 와 같은 연산자를 사용할 때는 반드시 NULL 이 뒤에 와야 합니다</p>

CONVERT

CONVERT 확인

CAST 와 같은 동작

PARSE

*정의 예정

TRY_CAST

TRY_CAST

<p>값이 숫자가 아닌 경우 NULL 을 반환하고, 그렇지 않으면 숫자 값을 해당 반환값으로 반환합니다.<br>&#x3C;, >, =, &#x3C;> 와 같은 연산자를 사용할 때는 반드시 NULL 이 뒤에 와야 합니다</p>

TRY_CONVERT

*정의 예정

TRY_CAST 와 동일한 동작

TRY_PARSE

TRY_CAST

정수를 날짜 또는 타임스탬프로 구문 분석할 때 동작이 달라질 수 있습니다.

암호화

TransactSQL

Snowflake

참고

ASYMKEY_ID

*정의 예정

ASYMKEYPROPERTY

*정의 예정

CERTENCODED

*정의 예정

CERTPRIVATEKEY

*정의 예정

DECRYPTBYASYMKEY

*정의 예정

DECRYPTBYCERT

*정의 예정

DECRYPTBYKEY

*정의 예정

DECRYPTBYKEYAUTOASYMKEY

*정의 예정

DECRYPTBYKEYAUTOCERT

*정의 예정

DECRYPTBYPASSPHRASE

_*to be defined_​

DENCRYPT_RAW 를 사용하여 모방 가능

ENCRYPTBYASYMKEY

*정의 예정

ENCRYPTBYCERT

*정의 예정

ENCRYPTBYKEY

*정의 예정

ENCRYPTBYPASSPHRASE

*정의 예정

ENCRYPT_RAW 를 사용하여 모방 가능

HASHBYTES

MD5, SHA1, SHA2

<p>현재 분리된 해시만 지원됩니다. 필요한 알고리즘에 따라 적절한 항목을 사용합니다.</p><p><strong>MD5</strong>는 16진수로 인코딩된 32자입니다.</p><p><strong>SHA1</strong>은 160비트가 포함된 16진수로 인코딩된 40자입니다.</p><p><strong>SHA2</strong>는 N비트 SHA-2 메시지 다이제스트를 포함하는 16진수로 인코딩된 문자열입니다. 크기는 다음과 같습니다.</p><p>224 = SHA-224</p><p>256 = SHA-256(기본값)</p><p>384 = SHA-384</p><p>512 = SHA-512</p>

IS_OBJECTSIGNED

*정의 예정

KEY_GUID

*정의 예정

KEY_ID

*정의 예정

KEY_NAME

*정의 예정

SIGNBYASYMKEY

*정의 예정

SIGNBYCERT

*정의 예정

SYMKEYPROPERTY

*정의 예정

VERIGYSIGNEDBYCERT

*정의 예정

커서

TransactSQL

Snowflake

참고

@@CURSOR_ROWS

*정의 예정

@@FETCH_STATUS

*정의 예정

CURSOR_STATUS

*정의 예정

데이터 타입

TransactSQL

Snowflake

참고

DATALENGTH

OCTET_LENGTH

​Snowflake는 분수 바이트 수를 사용하지 않으므로 길이는 항상 8 * OCTET_LENGTH 로 계산됩니다

IDENT_SEED

*정의 예정

IDENT_CURRENT

*정의 예정

IDENTITY

*정의 예정

IDENT_INCR

*정의 예정

SQL_VARIANT_PROPERTY

*정의 예정

날짜 및 시간

TransactSQL

Snowflake

참고

@@DATEFIRST

*정의 예정

@@LANGUAGE

*정의 예정

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

CURRENT_TIMEZONE

*정의 예정

DATEADD

DATEADD

DATEDIFF

DATEDIFF

DATEDIFF_BIG

*정의 예정

DATEFROMPARTS

DATE_FROM_PARTS

DATENAME

*정의 예정

<p>이 함수는 datepart와 date, 두 인자를 받습니다. 문자열을 반환합니다. 다음은 TSQL에서 Snowflake까지 지원되는 날짜 부분입니다.</p><p><strong>year, yyyy, yy</strong> -> DATE_PART(YEAR, “$date”) <strong>quarter, qq, q</strong> -> DATE_PART(QUARTER, “$date”)<br><strong>month, mm, m</strong> -> <strong>MONTHNAME</strong>( “$date”), 세 글자로 된 영어 월 이름만 제공<br><strong>dayofyear, dy, y</strong> -> DATE_PART(DAYOFYEAR, “$date”)<br><strong>day, dd, d</strong> -> DATE_PART(DAY, “$date”)<br><strong>week, wk, ww</strong> -> DATE_PART(WEEK, “$date”)</p><p><strong>weekday, dw</strong> -> <strong>DAYNAME</strong>(“$date”), 세 글자로 된 영어 요일 이름만 제공<br><strong>hour, hh</strong> -> DATE_PART(HOUR, “$date”)<br><strong>minute, n</strong> -> DATE_PART(MINUTE, “$date”)<br><strong>second, ss, s</strong> -> DATE_PART(SECOND, “$date”)<br><strong>millisecond, ms</strong> -> DATE_PART(MS, “$date”) <strong>microsecond, mcs</strong> -> DATE_PART(US, “$date”)<br><strong>nanosecond, ns</strong> -> DATE_PART(NS, “$date”)<br><strong>TZoffset, tz</strong> -> 시간 오프셋을 얻으려면 특별한 구현이 필요합니다.</p>

DATEPART

DATE_PART

DATETIME2FROMPARTS

*정의 예정

DATETIMEFROMPARTS

*정의 예정

DATE_FROM_PARTS 및 TIME_FROM_PARTS 를 조합하여 모방할 수 있습니다

DATETIMEOFFSETFROMPARTS

*정의 예정

DAY

DAY

EOMONTH

*정의 예정

LAST_DAY 를 사용하여 모방 가능

GETDATE

GETDATE

GETUTCDATE

*정의 예정

CONVERT_TIMEZONE 을 사용하여 모방 가능

ISDATE

*정의 예정

<p><strong>TRY_TO_DATE</strong>를 사용하여 모방할 수 있습니다.</p><p>값이 <strong>date</strong>가 아닌 경우 NULL을 반환하고, 그렇지 않은 경우 날짜 값을 그대로 반환합니다.<br>&#x3C;, >, =, &#x3C;>와 같은 연산자를 사용할 때는 뒤에 NULL이 와야 합니다.</p>

MONTH

MONTH

SMALLDATETIMEFROMPARTS

*정의 예정

​​ DATE_FROM_PARTS 및 TIME_FROM_PARTS 를 조합하여 모방할 수 있습니다

SWITCHOFFSET

*정의 예정

CONVERT_TIMEZONE 을 사용하여 모방 가능

SYSDATETIME

LOCALTIME

SYSDATETIMEOFFSET

*정의 예정

CONVERT_TIMEZONE 및 LOCALTIME 을 사용하여 모방할 수 있습니다

SYSUTCDATETIME

*정의 예정

​​ CONVERT_TIMEZONE 및 LOCALTIME 을 사용하여 모방할 수 있습니다

TIMEFROMPARTS

TIME_FROM_PARTS

TODATETIMEOFFSET

*정의 예정

CONVERT_TIMEZONE 을 사용하여 모방 가능

YEAR

YEAR

JSON

TransactSQL

Snowflake

참고

ISJSON

CHECK_JSON

​이는 Snowflake의 ‘미리 보기 기능’입니다

JSON_VALUE

*정의 예정

<p></p><p>TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))</p> 를 사용하여 모방 가능

JSON_QUERY

*정의 예정

JSON_MODIFY

*정의 예정

수학

TransactSQL

Snowflake

참고

ABS

ABS

ACOS

ACOS

ASIN

ASIN

ATAN

ATAN

ATN2

ATAN2

CEILING

CEIL

COS

COS

COT

COT

DEGREES

DEGREES

EXP

EXP

FLOOR

FLOOR

LOG

LN

LOG10

LOG

PI

PI

POWER

POWER

RADIANS

RADIANS

RAND

RANDOM

ROUND

ROUND

SIGN

SIGN

SIN

SIN

SQRT

SQRT

SQUARE

SQUARE

논리적

TransactSQL

Snowflake

참고

CHOOSE

*정의 예정

DECODE 를 사용하여 모방할 수 있습니다

GREATEST

GREATEST

IIF

IIF

LEAST

LEAST

NULLIF

NULLIF

메타데이터

TransactSQL

Snowflake

참고

TransactSQL

Snowflake

참고

@@PROCID

*정의 예정

APP_NAME

*정의 예정

APPLOCK_MODE

*정의 예정

APPLOCK_TEST

*정의 예정

ASSEMBLYPROPERTY

*정의 예정

COL_LENGTH

이 정보를 검색하기 위해 COL_LENGTH_UDF라는 UDF가 제공됩니다. 이 UDF는 Transact-SQL 설명서에 지정된 것처럼 VARCHAR 유형에서만 작동합니다. 다른 데이터 타입의 경우 NULL을 반환합니다.

COL_NAME

*정의 예정

COLUMNPROPERTY

*정의 예정

DATABASE_PRINCIPAL_ID

*정의 예정

인자가 없는 경우 CURRENT_USER에 매핑됩니다.

DATABASEPROPERTYEX

*정의 예정

DB_ID

*정의 예정

CURRENT_DATABASE()로 변경하는 것이 좋습니다. 이 기능을 에뮬레이션해야 하는 경우
SELECTDATE_PART(EPOCH,CREATED) FROMINFORMATION_SCHEMA.DATABASESWHEREDATABASE_NAME= ‘DB’입니다.
비슷한 결과를 얻을 수 있습니다.

DB_NAME

*정의 예정

위에서 언급한 프로시저 이름에서 주로 사용됩니다.

FILE_ID

*정의 예정

FILE_IDEX

*정의 예정

FILE_NAME

*정의 예정

FILEGROUP_ID

*정의 예정

FILEGROUP_NAME

*정의 예정

FILEGROUPPROPERTY

*정의 예정

FILEPROPERTY

*정의 예정

FULLTEXTCATALOGPROPERTY

*정의 예정

FULLTEXTSERVICEPROPERTY

*정의 예정

INDEX_COL

*정의 예정

INDEXKEY_PROPERTY

*정의 예정

INDEXPROPERTY

*정의 예정

NEXT VALUE FOR

*정의 예정

OBJECT_DEFINITION

*정의 예정

OBJECT_ID

*정의 예정

대부분의 경우 교체할 수 있습니다. 대부분의 경우는 DROP TABLE IF EXISTS로 교체할 수 있는 IF OBJECT_ID(‘dbo.TABLE’) IS NOT NULL DROP TABLE dbo.Table과 같습니다(이 구문은 SQL SERVER에서도 지원됨). object_id를 복제해야 하는 경우 UDF는 함수 호출의 두 번째 매개 변수에 따라 추가됩니다.

OBJECT_NAME

*정의 예정

다음으로 교체할 수 있습니다. CREATE OR REPLACE PROCEDURE FOO() RETURNS STRING LANGUAGE JAVASCRIPT AS ‘ var rs = snowflake.execute({sqlText:SELECT CURRENT_DATABASE() | '.' | ?, binds:[arguments.callee.name]}); rs.next(); var procname = rs.getColumnValue(1); return procname; ‘;

OBJECT_NAME(@@PROCID)

‘ObjectName’

이 변환은 DeclareStatement 내부에 있을 때만 발생합니다.

ObjectName은 함수를 포함하는 TopLevelObject의 이름입니다.

OBJECT_SCHEMA_NAME

*정의 예정

OBJECT_SCHEMA_NAME(@@PROCID)

:OBJECT_SCHEMA_NAME

이 변환은 DeclareStatement 내에 있을 때만 발생합니다.

OBJECTPROPERTY

*정의 예정

OBJECTPROPERTYEX

*정의 예정

ORIGINAL_DB_NAME

*정의 예정

PARSENAME

PARSENAME_UDF

Parsename 함수의 동일한 동작을 에뮬레이션하기 위해 UDF를 생성합니다.

*정의 예정

SCHEMA_NAME

*정의 예정

SCOPE_IDENTITY

*정의 예정

이것이 필요한 경우 시퀀스를 사용하고 삽입하기 전에 값을 캡처하는 것이 좋습니다

SERVERPROPERTY

*정의 예정

STATS_DATE

*정의 예정

TYPE_ID

*정의 예정

TYPE_NAME

*정의 예정

TYPEPROPERTY

*정의 예정

VERSION

*정의 예정

순위 지정

TransactSQL

Snowflake

참고

DENSE_RANK

DENSE_RANK

NTILE

NTILE

RANK

RANK

ROW_NUMBER

ROW_NUMBER

복제

TransactSQL

Snowflake

참고

PUBLISHINGSERVERNAME

*정의 예정

행 세트

TransactSQL

Snowflake

참고

OPENDATASOURCE

*정의 예정

OPENJSON

*정의 예정

QPENQUERY

*정의 예정

OPENROWSET

*정의 예정

OPENXML

OPENXML_UDF

Snowflake에서 동등한 동작으로 사용되는 사용자 정의 함수입니다.

STRING_SPLIT

SPLIT_TO_TABLE

Transact-SQL STRING_SPLIT의 enable_ordinal 플래그는 Snowflake의 SPLIT_TO_TABLE 함수에서 직접 지원되지 않습니다. 순서 열이 필요한 경우 이 동작을 복제하기 위해 STRING_SPLIT_UDF라는 UDF(사용자 정의 함수)가 생성됩니다. 순서 열이 없는 경우, STRING_SPLIT는 value라는 단일 열을 반환하지만, SPLIT_TO_TABLE은 value, index(ordinal과 동등), seq의 세 열을 반환합니다. 자세한 내용은 SPLIT_TO_TABLE 설명서를 참조하세요.

보안

TransactSQL

Snowflake

참고

CERTENCODED

*정의 예정

CERTPRIVATEKEY

*정의 예정

CURRENT_USER

CURRENT_USER

DATABASE_PRINCIPAL_ID

*정의 예정

HAS_PERMS_BY_NAME

*정의 예정

IS_MEMBER

*정의 예정

클라이언트에 새 역할 정의가 요구될 수 있지만 쿼리를 INFORMATION_SCHEMA 로 변경합니다

IS_ROLEMEMBER

*정의 예정

<p>Snowflake의 유사 함수</p><p><strong>IS_ROLE_IN_SESSION</strong></p>

IS_SRVROLEMEMBER

*정의 예정

LOGINPROPERTY

*정의 예정

ORIGINAL_LOGIN

*정의 예정

PERMISSIONS

*정의 예정

PWDCOMPARE

*정의 예정

PWDENCRYPT

*정의 예정

SCHEMA_ID

*정의 예정

SCHEMA_NAME

*정의 예정

SESSION_USER

*정의 예정

SUSER_ID

*정의 예정

SUSER_NAME

*정의 예정

SUSER_SID

*정의 예정

SUSER_SNAME

*정의 예정

sys.fn_builtin_permissions

*정의 예정

sys.fn_get_audit_file

*정의 예정

sys.fn_my_permissions

*정의 예정

SYSTEM_USER

*정의 예정

USER_ID

*정의 예정

USER_NAME

*정의 예정

CURRENT_USER 로 매핑됩니다

String

TransactSQL

Snowflake

참고

ASCII

ASCII

CHAR

CHR, CHAR

CHARINDEX

CHARINDEX

CONCAT

CONCAT

CONCAT_WS

CONCAT_WS

COALESCE

COALESCE

DIFFERENCE

*정의 예정

FORMAT

TO_CHAR

해당 형식(숫자 또는 날짜 시간)이 완전히 지원되지 않으면 SSC-EWI-0006 또는 SSC-FDM-0036이 생성될 수 있습니다.

LEFT

LEFT

LEN

LEN

LOWER

LOWER

LTRIM

LTRIM

NCHAR

*정의 예정

PATINDEX

*정의 예정

REGEXP_INSTR 로 매핑됩니다.

QUOTENAME

QUOTENAME_UDF

Quotename 함수의 동일한 동작을 에뮬레이션하기 위해 UDF 를 생성합니다

REPLACE

REPLACE

REPLICATE

REPEAT

REVERSE

REVERSE

RIGHT

RIGHT

RTRIM

RTRIM

SOUNDEX

SOUNDEX

SPACE

*정의 예정

STR

*정의 예정

STRING_AGG

*정의 예정

STRING_ESCAPE

*정의 예정

STRING_SPLIT

SPLIT_TO_TABLE

STUFF

*정의 예정

CREATE OR REPLACE FUNCTION STUFF(S string, STARTPOS int, LENGTH int, NEWSTRING string) RETURNS string LANGUAGE SQL AS ‘ left(S, STARTPOS)

SUBSTRING

SUBSTRING

TRANSLATE

TRANSLATE

TRIM

TRIM

UNICODE

UNICODE

UPPER

UPPER

시스템

TransactSQL

Snowflake

참고

$PARTITION

*정의 예정

@@ERROR

*정의 예정

@@IDENTITY

*정의 예정

이것이 필요한 경우 시퀀스를 사용하고 삽입하기 전에 값을 캡처하는 것이 좋습니다

@@PACK_RECEIVED

*정의 예정

@@ROWCOUNT

*정의 예정

@@TRANCOUNT

*정의 예정

BINARY_CHECKSUM

*정의 예정

CHECKSUM

*정의 예정

COMPRESS

COMPRESS

<p>​Snowflake 버전에는 압축 방법을 나타내는 메서드 인자가 있습니다. 유효한 값은 다음과 같습니다. <strong>SNAPPY, ZLIB, ZSTD, BZ2</strong></p><p>압축 수준은 괄호로 묶여 지정되며 음이 아닌 정수여야 합니다.</p>

CONNECTIONPROPERTY

*정의 예정

CONTEXT_INFO

*정의 예정

CURRENT_REQUEST_ID

*정의 예정

CURRENT_TRANSACTION_ID

*정의 예정

DECOMPRESS

*정의 예정

Snowflake에는 이를 위한 두 가지 함수 DECOMPRESS_BINARYDECOMPRESS_STRING 이 있습니다.​

ERROR_LINE

*정의 예정

<p>SnowScript: Snowflake에서 **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**와 함께 사용하도록 지원되지 않습니다.</p> <p>JavaScript: **ERROR\_LINE** 헬퍼에 매핑됩니다. EXEC 헬퍼는 스택 추적에서 Exception 줄 속성을 캡처합니다. </p>

ERROR_MESSAGE

SQLERRM

추가된 SSC-FDM-TS0023에서 반환된 오류 메시지는 Snowflake에서 다를 수 있습니다.

ERROR_NUMBER

*정의 예정

<p>SnowScript: Snowflake에서 **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**와 함께 사용하도록 지원되지 않습니다.</p> <p>JavaScript: **ERROR\_NUMBER** 헬퍼에 매핑됩니다. EXEC 헬퍼는 Exception 코드 속성을 캡처합니다.</p>

ERROR_PROCEDURE

Mapped

<p>SnowScript: 현재 프로시저 이름을 사용합니다. 추가된 **SSC-FDM-TS0023** 결과 값은 예외가 발생하는 위치가 아니라 함수가 호출되는 저장 프로시저를 기준으로 합니다.</p><p>JavaScript: `arguments.callee.name` 프로시저 속성에서 가져온 **ERROR\_PROCEDURE** 헬퍼에 매핑됩니다.</p>

ERROR_SEVERITY

*정의 예정

<p>SnowScript: Snowflake에서 **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**와 함께 사용하도록 지원되지 않습니다.</p>

ERROR_STATE

SQLSTATE

<p>SnowScript: **SQLSTATE** snowflake 속성으로 변환됩니다. 추가된 **SSC-FDM-TS0023**의 반환된 값은 Snowflake에서 다를 수 있습니다.</p> <p>JavaScript: 헬퍼는 Exception 상태 속성을 캡처합니다. </p>

FORMATMESSAGE

FORMATEMESSAGE_UDF

FORMATMESSAGE 함수와 동일한 동작을 에뮬레이션하지만 몇 가지 제한이 있는 UDF 를 생성합니다.

GET_FILESTREAM_TRANSACTION_CONTEXT

*정의 예정

GETANSINULL

*정의 예정

HOST_ID

*정의 예정

HOST_NAME

*정의 예정

ISNULL

NVL

ISNUMERIC

*정의 예정

직접적인 등가물은 없지만 사용자 정의 UDF 에 매핑하여 TSQL 과 동일한 값을 반환할 수 있습니다.

MIN_ACTIVE_ROWVERSION

*정의 예정

NEWID

*정의 예정

​UUID_STRING 으로 매핑됩니다

NEWSEQUENTIALID

*정의 예정

ROWCOUNT_BIG

*정의 예정

SESSION_CONTEXT

*정의 예정

SESSION_ID

*정의 예정

XACT_STATE

*정의 예정

시스템 통계

TransactSql

Snowflake

참고

@@CONNECTIONS

*정의 예정

<p>​Snowflake의 유사 함수: <strong>LOGIN_HISTORY.</strong></p><p>지정된 시간 범위 내에서 로그인 이벤트를 반환합니다.</p>

@@PACK_RECEIVED

*정의 예정

@@CPU_BUSY

*정의 예정

@@PACK_SENT

*정의 예정

@@TIMETICKS

*정의 예정

@@IDLE

*정의 예정

@@TOTAL_ERRORS

*정의 예정

@@IO_BUSY

*정의 예정

@@TOTAL_READ

*정의 예정

@@PACKET_ERRORS

*정의 예정

@@TOTAL_WRITE

*정의 예정

텍스트 및 이미지

TransactSQL

Snowflake

참고

TEXTPTR

*정의 예정

TEXTVALID

*정의 예정

트리거

TransactSQL

Snowflake

참고

COLUMNS_UPDATED

*정의 예정

EVENTDATA

*정의 예정

TRIGGER_NESTLEVEL

*정의 예정

UPDATE

*정의 예정

시스템 함수

이 섹션에서는 Transact-SQL의 시스템 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명하는데, 특히 Snowflake의 UDFs 생성에 초점을 맞춥니다

ISNULL

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

NULL 을 지정된 대체 값으로 바꿉니다. (Transact-SQL 의 ISNULL).

샘플 소스 패턴

구문

SQL 서버
ISNULL ( check_expression , replacement_value )  
Copy
Snowflake SQL

Snowflake SQL 설명서

NVL( <expr1> , <expr2> )
Copy

SQL 서버

SELECT ISNULL(NULL, 'SNOWFLAKE') AS COMPANYNAME;
Copy

결과:

COMPANYNAME

SNOWFLAKE

Snowflake SQL
SELECT
NVL(NULL, 'SNOWFLAKE') AS COMPANYNAME;
Copy

결과:

COMPANYNAME

SNOWFLAKE

NEWID

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

고유 식별자 유형의 고유 값을 생성합니다. (Transact-SQL 의 NEWID).

샘플 소스 패턴

구문

SQL 서버
NEWID ( )  
Copy
Snowflake SQL

Snowflake SQL 설명서

UUID_STRING()
Copy

경고

런타임에 고유한 ID 를 생성하기 때문에 출력은 다를 수 있습니다

SQL 서버

SELECT NEWID ( ) AS ID;
Copy

결과:

ID

47549DDF-837D-41D2-A59C-A6BC63DF7910

Snowflake SQL
SELECT
UUID_STRING( ) AS ID;
Copy

결과:

ID

6fd4312a-7925-4ad9-85d8-e039efd82089

NULLIF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 두 식이 같으면 null 값을 반환합니다.

샘플 소스 패턴

구문

SQL 서버
NULLIF ( check_expression , replacement_value )  
Copy
Snowflake SQL

Snowflake SQL 설명서

NULLIF( <expr1> , <expr2> )
Copy

SQL 서버

SELECT NULLIF(6,9) AS RESULT1, NULLIF(5,5) AS RESULT2;
Copy

결과:

RESULT1

RESULT2

6

Null

Snowflake SQL
SELECT
NULLIF(6,9) AS RESULT1,
NULLIF(5,5) AS RESULT2;
Copy

결과:

RESULT1

RESULT2

6

Null

@@ROWCOUNT

Applies to
  • SQL 서버

설명

마지막 문의 영향을 받은 행의 수를 반환합니다. (Transact-SQL 의 @@ROWCOUNT).

샘플 소스 패턴

구문

SQL 서버
@@ROWCOUNT
Copy
Snowflake SQL

Snowflake SQL 설명서

SQLROWCOUNT
Copy

SQL 서버

CREATE TABLE table1
(
    column1 INT
);

CREATE PROCEDURE procedure1
AS
BEGIN
    declare @addCount int = 0;

    INSERT INTO table1 (column1) VALUES (1),(2),(3);
    set @addCount = @addCount + @@ROWCOUNT

   select @addCount
END
;
GO

EXEC procedure1;
Copy

결과:

3

Snowflake SQL
CREATE OR REPLACE TABLE table1
(
    column1 INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "11/13/2024",  "domain": "test" }}'
;

CREATE OR REPLACE PROCEDURE procedure1 ()
RETURNS TABLE()
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "11/13/2024",  "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
    DECLARE
        ADDCOUNT INT := 0;
        ProcedureResultSet RESULTSET;
    BEGIN
         

        INSERT INTO table1 (column1) VALUES (1),(2),(3);
        ADDCOUNT := :ADDCOUNT + SQLROWCOUNT;
        ProcedureResultSet := (

       select
            :ADDCOUNT);
        RETURN TABLE(ProcedureResultSet);
    END;
$$;

CALL procedure1();
Copy

결과:

:ADDCOUNT

3

FORMATMESSAGE

Applies to
  • SQL 서버

설명

Sys.messages의 기존 메시지 또는 제공된 문자열에서 메시지를 생성합니다. (Transact-SQL 의 FORMATMESSAGE).

샘플 소스 패턴

Snowflake는 FORMATMESSAGE 함수를 지원하지 않으므로 FORMATMESSAGE_UDF를 추가하여 동작을 시뮬레이션합니다.

구문

SQL 서버

FORMATMESSAGE ( { msg_number  | ' msg_string ' | @msg_variable} , [ param_value [ ,...n ] ] )  
Copy

SQL 서버

SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS RESULT;
Copy

결과:

RESULT

This is the first variable and this is the second variable.

Snowflake

SELECT
--** SSC-FDM-TS0008 - FORMATMESSAGE WAS CONVERTED TO CUSTOM UDF FORMATMESSAGE_UDF AND IT MIGHT HAVE A DIFFERENT BEHAVIOR. **
FORMATMESSAGE_UDF('This is the %s and this is the %s.', ARRAY_CONSTRUCT('first variable', 'second variable')) AS RESULT;
Copy

결과:

RESULT

This is the first variable and this is the second variable.

FORMATMESSAGE_UDF

Snowflake에는 FORMATMESSAGE 기능을 제공하는 함수가 없습니다. SnowConvert AI는 FORMATMESSAGE의 동작을 에뮬레이션하는 다음 Python UDF를 생성합니다.

CREATE OR REPLACE FUNCTION FORMATMESSAGE_UDF(MESSAGE STRING, ARGS ARRAY)
RETURNS STRING
LANGUAGE python
IMMUTABLE
RUNTIME_VERSION = '3.8'
HANDLER = 'format_py'
as
$$
def format_py(message,args):
  return message % (*args,)
$$;
Copy

이 UDF 는 경우에 따라 올바르게 작동하지 않을 수 있습니다.

  • %I64d 자리 표시자를 사용하면 오류가 throw됩니다.

  • 치환 인자의 수가 자리 표시자의 수와 다르면 오류가 throw됩니다.

  • %u 또는 %X 와 같은 일부 서명되지 않은 자리 표시자는 값 형식을 지정할 때 올바르게 작동하지 않습니다.

  • message_ids를 처리할 수 없습니다.

문자열 함수

이 섹션에서는 Transact-SQL의 문자열 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명하는데, 특히 Snowflake의 UDFs 생성에 초점을 맞춥니다.

CHAR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

ASCII 테이블에 매개 변수로 전송된 정수가 포함된 단일 바이트 문자를 반환합니다(Transact-SQL 의 CHAR).

샘플 소스 패턴

구문

SQL 서버
CHAR( expression )
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

{CHR | CHAR} ( <input> )
Copy
JavaScript

JavaScript 전체 설명서

String.fromCharCode( expression1, ... , expressionN )
Copy

SQL 서버

SELECT CHAR(170) AS SMALLEST_A
Copy

출력:

SMALLEST_A

ª

Snowflake SQL
SELECT
CHAR(170) AS SMALLEST_A;
Copy

결과:

SMALLEST_A

ª

JavaScript
CREATE OR REPLACE FUNCTION get_char(expression float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
  return String.fromCharCode( EXPRESSION );
$$;

SELECT GET_CHAR(170) SMALLEST_A;
Copy

결과:

SMALLEST_A

ª

CHARINDEX

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수로 전송된 지정된 값이 일치할 때 처음 발생한 값의 인덱스를 반환합니다 (Transact-SQL 의 CHARINDEX) .

샘플 소스 패턴

구문

SQL 서버
CHARINDEX( expression_to_find, expression_to_search [, start] )
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

CHARINDEX( <expr1>, <expr2> [ , <start_pos> ] )
Copy
JavaScript

JavaScript 전체 설명서

String.indexOf( search_value [, index] )
Copy

SQL 서버

SELECT CHARINDEX('t', 'Customer') AS MatchPosition;
Copy

결과:

INDEX

33

Snowflake SQL
SELECT
CHARINDEX('t', 'Customer') AS MatchPosition;
Copy

결과:

INDEX

33

JavaScript

참고

Transact의 인덱스는 0에서 시작하는 JavaScript 대신 1에서 시작합니다.

CREATE OR REPLACE FUNCTION get_index
(
  expression_to_find varchar, 
  expression_to_search varchar, 
  start_index  float
)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
  return EXPRESSION_TO_SEARCH.indexOf(EXPRESSION_TO_FIND, START_INDEX)+1;
$$;

SELECT GET_INDEX('and', 'Give your heart and soul to me, and life will always be la vie en rose', 20) AS INDEX;
Copy

결과:

INDEX

33

COALESCE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

인자를 순서대로 평가하고 처음에는 NULL로 평가되지 않는 첫 번째 표현식의 현재 값을 반환합니다. 예를 들어, SELECT COALESCE(NULL, NULL, ‘third_value’, ‘fourth_value’)는 null이 아닌 첫 번째 값인 세 번째 값을 반환합니다. (Transact-SQL의 COALESCE).

샘플 소스 패턴

구문

SQL 서버
COALESCE ( expression [ ,...n ] )   
Copy
Snowflake SQL

Snowflake SQL 설명서

COALESCE( <expr1> , <expr2> [ , ... , <exprN> ] )
Copy

SQL 서버

SELECT TOP 10 StartDate, 
COALESCE(EndDate,'2000-01-01') AS FIRST_NOT_NULL 
FROM HumanResources.EmployeeDepartmentHistory
Copy

결과:

StartDate

FIRST_NOT_NULL

2009-01-14

2000-01-01

2008-01-31

2000-01-01

2007-11-11

2000-01-01

2007-12-05

2010-05-30

2010-05-31

2000-01-01

2008-01-06

2000-01-01

2008-01-24

2000-01-01

2009-02-08

2000-01-01

2008-12-29

2000-01-01

2009-01-16

2000-01-01

Snowflake SQL
SELECT TOP 10
StartDate,
COALESCE(EndDate,'2000-01-01') AS FIRST_NOT_NULL
FROM
HumanResources.EmployeeDepartmentHistory;
Copy

결과:

StartDate

FIRST_NOT_NULL

2009-01-14

2000-01-01

2008-01-31

2000-01-01

2007-11-11

2000-01-01

2007-12-05

2010-05-30

2010-05-31

2000-01-01

2008-01-06

2000-01-01

2008-01-24

2000-01-01

2009-02-08

2000-01-01

2008-12-29

2000-01-01

2009-01-16

2000-01-01

CONCAT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

문자열 값을 다른 문자열 값과 연결합니다. (Transact-SQL 의 CONCAT).

샘플 소스 패턴

구문

SQL 서버
CONCAT ( string_value1, string_value2 [, string_valueN ] )  
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

CONCAT( <expr1> [ , <exprN> ... ] )

<expr1> || <expr2> [ || <exprN> ... ]
Copy
JavaScript

JavaScript 전체 설명서

 String.concat( expression1, ..., expressionN )
Copy

SQL 서버

SELECT CONCAT('Ray',' ','of',' ','Light') AS TITLE;
Copy

출력:

TITLE

Ray of Light

Snowflake SQL
SELECT
CONCAT('Ray',' ','of',' ','Light') AS TITLE;
Copy

출력:

TITLE

Ray of Light

JavaScript
CREATE OR REPLACE FUNCTION concatenate_strs(strings array)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
  var result = ""
  STRINGS.forEach(element => result = result.concat(element));
  return result;
$$;
SELECT concatenate_strs(array_construct('Ray',' ','of',' ','Light')) TITLE;
Copy

출력:

   TITLE|
Copy

————| Ray of Light|

LEFT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 문자 수를 가진 문자열의 오른쪽 부분을 반환합니다. (Transact-SQL 의 RIGHT).

샘플 소스 패턴

구문

SQL 서버
LEFT ( character_expression , integer_expression )  
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

LEFT ( <expr> , <length_expr> )
Copy
JavaScript

동작을 에뮬레이션하는 데 사용되는 함수

function LEFT(string, index){
    if(index < 0){
        throw new RangeError('Invalid INDEX on LEFT function');
    }
    return string.slice( 0, index);
  }
return LEFT(STR, INDEX);
Copy

SQL 서버

SELECT LEFT('John Smith', 5) AS FIRST_NAME;
Copy

출력:

FIRST_NAME

John

Snowflake SQL
SELECT LEFT('John Smith', 5) AS FIRST_NAME;
Copy

출력:

FIRST_NAME

John

JavaScript
CREATE OR REPLACE FUNCTION left_str(str varchar, index float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
    function LEFT(string, index){
      if(index < 0){
          throw new RangeError('Invalid INDEX on LEFT function');
      }
      return string.slice( 0, index);
    }
  return LEFT(STR, INDEX);
$$;
SELECT LEFT_STR('John Smith', 5) AS FIRST_NAME;
Copy

출력:

FIRST_NAME

John

LEN

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

문자열의 길이를 반환합니다(Transact-SQL 의 LEN).

샘플 소스 패턴

구문

SQL 서버
LEN( string_expression )
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

LENGTH( <expression> )
LEN( <expression> )
Copy
JavaScript

JavaScript SQL 전체 설명서

 string.length
Copy

SQL 서버

SELECT LEN('Sample text') AS [LEN];
Copy

출력:

LEN

11

Snowflake SQL
SELECT LEN('Sample text') AS LEN;
Copy

출력:

LEN

11

JavaScript
CREATE OR REPLACE FUNCTION get_len(str varchar)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  return STR.length;
$$;
SELECT GET_LEN('Sample text') LEN;
Copy

출력:

LEN

11

LOWER

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

문자열을 소문자로 변환합니다(Transact-SQL 의 LOWER).

샘플 소스 패턴

구문

SQL 서버
LOWER ( character_expression )  
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

LOWER( <expr> )
Copy
JavaScript

JavaScript SQL 전체 설명서

 String.toLowerCase( )
Copy

SQL 서버

SELECT LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') AS LOWERCASE;
Copy

출력:

LOWERCASE

you are a prediction of the good ones

Snowflake SQL
SELECT LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') AS LOWERCASE;
Copy

출력:

LOWERCASE

you are a prediction of the good ones

JavaScript
CREATE OR REPLACE FUNCTION to_lower(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
  return STR.toLowerCase();
$$;

SELECT TO_LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') LOWERCASE;
Copy

출력:

LOWERCASE

you are a prediction of the good ones

NCHAR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수로 전송된 정수의 UNICODE 문자를 반환합니다(Transact-SQL 의 NCHAR).

샘플 소스 패턴

구문

NCHAR( expression )
Copy
인자

: 정수 식입니다.

Return Type

문자열 값으로, 수신된 입력에 따라 달라집니다.

쿼리

SELECT NCHAR(170);
Copy
결과

ª

참고

JavaScript 에서 이 함수에 대한 등가성은 CHAR 에 설명되어 있습니다.

REPLACE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 문자열 값의 모든 항목을 다른 문자열 값으로 바꿉니다. (Transact-SQL 의 REPLACE).

샘플 소스 패턴

구문

SQL 서버
REPLACE ( string_expression , string_pattern , string_replacement )  
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

REPLACE( <subject> , <pattern> [ , <replacement> ] )
Copy
JavaScript
 String.replace( pattern, new_expression)
Copy

SQL 서버

SELECT REPLACE('Real computer software', 'software','science') AS COLUMNNAME;
Copy

출력:

COLUMNNAME           |
---------------------|
Real computer science|
Copy
Snowflake SQL
SELECT REPLACE('Real computer software', 'software','science') AS COLUMNNAME;
Copy

출력:

COLUMNNAME           |
---------------------|
Real computer science|
Copy
JavaScript
 CREATE OR REPLACE FUNCTION REPLACER (str varchar, pattern varchar, new_expression varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
   return STR.replace( PATTERN, NEW_EXPRESSION );
$$;

SELECT REPLACER('Real computer software', 'software', 'science') AS COLUMNNAME;
Copy

\ 출력:

COLUMNNAME             |
---------------------|
Real computer science|
Copy

REPLICATE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

문자열 값을 지정된 횟수만큼 복제합니다. (Transact-SQL 의 REPLICATE).

샘플 소스 패턴

구문

SQL 서버
REPLICATE( string_expression, number_expression )
Copy
Snowflake SQL

Snowflake SQL 설명서

REPEAT(<input>, <n>)
Copy
JavaScript

JavaScript 설명서

String.repeat( number_expression )
Copy

SQL 서버

SELECT REPLICATE('Staying alive',5) AS RESULT
Copy

결과:

RESULT                                                           |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
Copy
Snowflake SQL
SELECT REPEAT('Staying alive',5) AS RESULT;
Copy

결과:

RESULT                                                           |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
Copy
JavaScript
 CREATE OR REPLACE FUNCTION REPEAT_STR (str varchar, occurrences float)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
 
   return STR.repeat( OCCURRENCES );
$$;

SELECT REPEAT_STR('Staying alive ', 5) AS RESULT;
Copy

결과:

RESULT                                                           |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
Copy

RTRIM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

선행 공백을 제거한 후 문자 식을 반환합니다. (Transact-SQL 의 RTRIM).

샘플 소스 패턴

구문

SQL 서버
RTRIM( string_expression )
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

RTRIM(<expr> [, <characters> ])
Copy
JavaScript

동작을 에뮬레이션하는 데 사용되는 사용자 정의 함수

 function RTRIM(string){
    return string.replace(/s+$/,"");
}
Copy

SQL 서버

입력:

SELECT RTRIM('LAST TWO BLANK SPACES  ') AS [RTRIM]
Copy

출력:

RTRIM                |
---------------------|
LAST TWO BLANK SPACES|
Copy
Snowflake SQL
SELECT RTRIM('LAST TWO BLANK SPACES  ') AS RTRIM;
Copy

결과:

RTRIM                |
---------------------|
LAST TWO BLANK SPACES|
Copy
JavaScript
 CREATE OR REPLACE FUNCTION rtrim(str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  function RTRIM(string){
    return string.replace(/s+$/,"");
    }
   return RTRIM( STR );
$$;

SELECT RTRIM('LAST TWO BLANK SPACES  ') AS RTRIM;
Copy

결과:

RTRIM                |
---------------------|
LAST TWO BLANK SPACES|
Copy

SPACE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

빈 공백의 개수를 반환합니다. (Transact-SQL 의 SPACE).

샘플 소스 패턴

구문

SQL 서버
SPACE ( integer_expression )  
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

SPACE(<n>)
Copy
JavaScript

동작을 에뮬레이션하는 데 사용되는 사용자 정의 함수

 function SPACE( occurrences ){
    return ' '.repeat( occurrences );
}
Copy

SQL 서버

입력:

SELECT CONCAT('SOME', SPACE(5), 'TEXT') AS RESULT;
Copy

출력:

RESULT       |
-------------|
SOME     TEXT|
Copy
Snowflake SQL

입력:

SELECT CONCAT('SOME', SPACE(5), 'TEXT') AS RESULT;
Copy

출력:

RESULT       |
-------------|
SOME     TEXT|
Copy
JavaScript

입력:

 CREATE OR REPLACE FUNCTION SPACE(occurrences float)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
    function SPACE( occurrences ){
    return ' '.repeat( occurrences );
    }
    return SPACE( OCCURRENCES );
$$;

SELECT CONCAT('SOME', SPACE(5), 'TEXT') RESULT;
Copy

출력:

RESULT       |
-------------|
SOME     TEXT|
Copy

SUBSTRING

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

선행 공백을 제거한 후 문자 식을 반환합니다. (Transact-SQL 의 RTRIM).

샘플 소스 패턴

구문

SQL 서버
SUBSTRING( string_expression, start, length )
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )

SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )
Copy
JavaScript

동작을 에뮬레이션하는 데 사용되는 사용자 정의 함수

 string.substring( indexA [, indexB])
Copy

SQL 서버

입력:

SELECT SUBSTRING('abcdef', 2, 3) AS SOMETEXT;  
Copy

출력:

SOMETEXT|
--------|
bcd     |
Copy
Snowflake SQL
SELECT SUBSTRING('abcdef', 2, 3) AS SOMETEXT;  
Copy

결과:

SOMETEXT|
--------|
bcd     |
Copy
JavaScript
 CREATE OR REPLACE FUNCTION REPLACER_LENGTH(str varchar, index float, length float)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
    var start = INDEX - 1;
    var end = STR.length - (LENGTH - 1);
    return STR.substring(start, end);
$$;

SELECT REPLACER_LENGTH('abcdef', 2, 3) AS SOMETEXT;
Copy

결과:

SOMETEXT|
--------|
bcd     |
Copy

UPPER

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

문자열을 대문자로 변환합니다.(Transact-SQL 의 UPPER](https://docs.microsoft.com/en-us/sql/t-sql/functions/upper-transact-sql?view=sql-server-ver15)).

샘플 소스 패턴

구문

SQL 서버
UPPER( string_expression ) 
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

UPPER( <expr> )
Copy
JavaScript

JavaScript SQL 전체 설명서

 String.toUpperCase( )
Copy

SQL 서버

SELECT UPPER('you are a prediction of the good ones') AS [UPPER]
Copy

출력:

+-------------------------------------|
|UPPER                                |
+-------------------------------------|
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------|
Copy
Snowflake SQL
SELECT
UPPER('you are a prediction of the good ones') AS UPPER;
Copy

출력:

+-------------------------------------|
|UPPER                                |
+-------------------------------------|
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------|
Copy
JavaScript
 CREATE OR REPLACE FUNCTION to_upper(str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  return STR.toUpperCase();
$$;

SELECT TO_UPPER('you are a prediction of the good ones') UPPER;
Copy

\ 출력:

UPPER                                |
-------------------------------------|
YOU ARE A PREDICTION OF THE GOOD ONES|
Copy

ASCII

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

ASCII 테이블에 있는 문자의 번호 코드를 반환합니다. (Transact-SQL 의 ASCII).

샘플 소스 패턴

구문

ASCII( expression )
Copy

인자

: VARCVHAR 또는 CHAR 식.

Return Type

INT.

쿼리

SELECT ASCII('A') AS A , ASCII('a') AS a;
Copy

결과

          A|          a|
-----------| ----------|
         65|         97|
Copy

JS 의 ASCII

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 ASCII 테이블에 있는 문자의 번호 코드를 반환합니다(JavaScript charCodeAt 함수 설명서).

샘플 소스 패턴

구문

 string.charCodeAt( [index] )
Copy
인자

인덱스 (선택 사항): 문자를 가져와 ASCII 테이블에서 해당 코드 번호를 반환할 문자열의 인덱스입니다. 이 매개 변수를 지정하지 않으면 기본적으로 0이 사용됩니다.\

Return Type

Int.

쿼리

 CREATE OR REPLACE FUNCTION get_ascii(c char)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  return C.charCodeAt();
$$;

SELECT GET_ASCII('A') A, GET_ASCII('a') a;
Copy
결과
          A|          a|
-----------| ----------|
         65|         97|    
Copy

QUOTENAME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

따옴표로 구분된 문자열을 반환합니다. (Transact-SQL 의 QUOTENAME).

샘플 소스 패턴

구문

QUOTENAME( string_expression [, quote_character])
Copy

인자

string_expression: 구분할 문자열입니다.

quote_character: 문자열을 구분 기호로 사용할 문자 한 개입니다.

Return Type

NVARCHAR(258). 따옴표가 (‘), ([]), (“), ( () ), ( >< ), ({}) 또는 (`) 중 다른 경우 null입니다.

쿼리

SELECT QUOTENAME('Hello', '`') AS HELLO;
Copy

결과

    HELLO|      
---------|
  `Hello`|  
Copy

JS 의 QUOTENAME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

안타깝게도 이 함수는 JavaScript 에서 사용할 수 없지만 미리 정의된 함수를 사용하여 구현할 수 있습니다.

샘플 소스 패턴

구현 예시

 function QUOTENAME(string, quote){
    return quote.concat(string, quote);
}
Copy
인자

string: 구분할 문자열 식입니다.

quote: 구분 기호로 사용할 따옴표.

Return Type

문자열.

쿼리

CREATE OR REPLACE FUNCTION QUOTENAME(str varchar, quote char)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
  function QUOTENAME(string, quote){
    const allowed_quotes = /[\']|[\"]|[(]|[)]|[\[]|[\]]|[\{]|[\}]|[\`]/;
    
    if(!allowed_quotes.test(quote)) throw new TypeError('Invalid Quote');
    
    return quote.concat(string, quote);
  }
   return QUOTENAME(STR, QUOTE);
$$;

SELECT QUOTENAME('Hola', '`') HELLO;
Copy
결과
    HELLO|      
---------|
  `Hello`| 
Copy

CONCAT_WS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

문자열 값 사이에 구분 기호를 사용하여 문자열 값을 다른 값과 연결합니다. (Transact-SQL 의 CONCAT_WS).

샘플 소스 패턴

구문

CONCAT_WS( separator, expression1, ... ,expressionN )
Copy

인자

구분 기호: 결합할 구분 기호입니다.

expression1, ... ,expressionN: 문자열로 찾을 식입니다.

Return Type

문자열 값으로, 수신된 입력에 따라 달라집니다.

쿼리

SELECT CONCAT_WS(' ', 'Mariah','Carey') AS NAME;
Copy

결과

        NAME|      
------------|
Mariah Carey|
Copy

JS 의 조인

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

구분 기호를 사용하여 문자열 인자를 호출 문자열에 연결합니다(JavaScript Join 함수 설명서).

샘플 소스 패턴

구문

 Array.join( separator )
Copy
인자

구분 기호: 조인할 문자.

Return Type

문자열.

쿼리

 CREATE OR REPLACE FUNCTION join_strs(separator varchar, strings array)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  return STRINGS.join(SEPARATOR);
$$;
SELECT join_strs(' ',array_construct('Mariah','Carey')) NAME;
Copy
결과
        NAME|      
------------|
Mariah Carey|   
Copy

SOUNDEX

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

두 문자열의 유사성을 평가하기 위해 4문자 코드를 반환합니다. (Transact-SQL 의 SOUNDEX).

샘플 소스 패턴

구문

SOUNDEX( string_expression )
Copy

인자

string_expression: 반전할 문자열 식입니다.

Return Type

매개 변수로 전송된 문자열 식과 동일한 데이터 타입입니다.

쿼리

SELECT SOUNDEX('two') AS TWO , SOUNDEX('too') AS TOO;
Copy

결과

      TWO|      TOO|
---------|---------|
     T000|     T000|
Copy

JS 의 SOUNDEX

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

안타깝게도 JavaScript 에서는 SOUNDEX 알고리즘을 실행하는 메서드를 제공하지 않지만 수동으로 구현할 수 있습니다.

샘플 소스 패턴

구현 예시

 const dic = {A:0, B:1, C:2, D:3, E:0, F:1, G:2, H:0, I:0, J:2, K:2, L:4, M:5, N:5, O:0, P:1, Q:2, R:6, S:2, T:3, U:0, V:1, W:0, X:2, Y:0, Z:2};

  function getCode(letter){
      return dic[letter.toUpperCase()];
  }

  function SOUNDEX(word){
    var initialCharacter = word[0].toUpperCase();
    var initialCode = getCode(initialCharacter);
    for(let i = 1; i < word.length; ++i) {
        const letterCode = getCode(word[i]);
        if (letterCode && letterCode != initialCode) {
             initialCharacter += letterCode;
             if(initialCharacter.length == 4) break;
        }
        initialCode = letterCode;
    }
      
      return initialCharacter.concat( '0'.repeat( 4 - initialCharacter.length));
      
  }
Copy
인자

word: SOUNDEX등가물을 얻기 위한 문자열 식입니다.

Return Type

문자열.

쿼리

 CREATE OR REPLACE FUNCTION get_soundex(str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  const dic = {A:0, B:1, C:2, D:3, E:0, F:1, G:2, H:0, I:0, J:2, K:2, L:4, M:5, N:5, O:0, P:1, Q:2, R:6, S:2, T:3, U:0, V:1, W:0, X:2, Y:0, Z:2};

  function getCode(letter){
      return dic[letter.toUpperCase()];
  }

  function SOUNDEX(word){
    var initialCharacter = word[0].toUpperCase();
    var initialCode = getCode(initialCharacter);
    for(let i = 1; i < word.length; ++i) {
        const letterCode = getCode(word[i]);
        if (letterCode && letterCode != initialCode) {
             initialCharacter += letterCode;
             if(initialCharacter.length == 4) break;
        }
        initialCode = letterCode;
    }
    
    return initialCharacter.concat( '0'.repeat( 4 - initialCharacter.length));    
  }
  
  return SOUNDEX( STR );
$$;

SELECT GET_SOUNDEX('two') AS TWO , GET_SOUNDEX('too') AS TOO;
Copy
결과
      TWO|      TOO|
---------|---------|
     T000|     T000| 
Copy

REVERSE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

문자열을 반전시킵니다(Transact-SQL 의 REVERSE).

샘플 소스 패턴

구문

REVERSE( string_expression )
Copy

인자

string_expression: 반전할 문자열 식입니다.

Return Type

매개 변수로 전송된 문자열 식과 동일한 데이터 타입입니다.

쿼리

SELECT REVERSE('rotator') AS PALINDROME;
Copy

결과

      PALINDROME|      
----------------|
         rotator|  
Copy

JS 에서 반전

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

안타깝게도 이 함수는 JavaScript 에서 사용할 수 없지만 미리 정의된 함수를 사용하여 구현할 수 있습니다.

샘플 소스 패턴

구현 예시

 function REVERSE(string){
    return string.split("").reverse().join("");
}
Copy
인자

string: 반전할 문자열 식입니다.

Return Type

문자열.

쿼리

 CREATE OR REPLACE FUNCTION REVERSE(str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
   return STR.split("").reverse().join("");
$$;

SELECT REVERSE('rotator') PALINDROME;
Copy
결과
      PALINDROME|      
----------------|
         rotator|  
Copy

STRING_ESCAPE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

텍스트에서 특수 문자를 이스케이프하고 이스케이프된 문자가 포함된 텍스트를 반환합니다. (Transact-SQL 의 STRING_ESCAPE).

샘플 소스 패턴

구문

STRING_ESCAPE( text, type )
Copy

인자

text: 문자를 이스케이프할 텍스트입니다.

type: 이스케이프 문자를 이스케이프할 형식 유형입니다. 현재 JSON 형식만 지원됩니다.

Return Type

VARCHAR.

쿼리

SELECT STRING_ESCAPE('\   /  \\    "     ', 'json') AS [ESCAPE];  
Copy

결과

ESCAPE|
--------------------------|
  \\   \/  \\\\    \"     |
Copy

JS 의 문자열화

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

오브젝트를 JSON 문자열 형식으로 변환합니다(JavaScript stringify 함수 설명서).

샘플 소스 패턴

구문

 JSON.stringify( value )
Copy
인자

value: 변환할 오브젝트 식입니다.

Return Type

문자열.

쿼리

 CREATE OR REPLACE FUNCTION string_escape (str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
   return JSON.stringify( STR );
$$;

SELECT STRING_ESCAPE('\   /  \\    "     ') ESCAPE;
Copy
결과
                    ESCAPE|
--------------------------|
  \\   \/  \\\\    \"     | 
Copy

TRIM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

공백이 없는 문자 식을 반환합니다. (Transact-SQL 의 TRIM).

샘플 소스 패턴

구문

TRIM( string_expression )
Copy

인자

string_expression: 변환할 문자열 식입니다.

Return Type

VARCHAR 또는 NVARCHAR

SQL 서버

SELECT TRIM('  FIRST AND LAST TWO BLANK SPACES  ') AS [TRIM];
Copy

출력:

+-------------------------------|
|TRIM                           |
+-------------------------------|
|FIRST AND LAST TWO BLANK SPACES|
+-------------------------------|
Copy

Snowflake SQL

SELECT TRIM('  FIRST AND LAST TWO BLANK SPACES  ') AS TRIM;
Copy

출력:

+-------------------------------|
|TRIM                           |
+-------------------------------|
|FIRST AND LAST TWO BLANK SPACES|
+-------------------------------|
Copy

JS 의 트림

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수로 전송된 새 패턴을 사용하여 패턴의 발생 위치를 바꿉니다(JavaScript Replace 함수 설명서).

샘플 소스 패턴

구문

 String.trim( )
Copy
인자

이 함수는 매개 변수를 수신하지 않습니다.

Return Type

문자열.

쿼리

 CREATE OR REPLACE FUNCTION TRIM_STR(str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
   return STR.trim( );
$$;

SELECT TRIM_STR('  FIRST AND LAST TWO BLANK SPACES  ')TRIM
Copy
결과
                           TRIM|      
-------------------------------|
FIRST AND LAST TWO BLANK SPACES|   
Copy

DIFFERENCE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

SOUNDEX 알고리즘을 사용하여 두 문자열의 차이를 측정한 정수를 반환합니다. (Transact-SQL 의 DIFFERENCE).\ SOUNDEX 알고리즘을 실행하여 결과 문자열의 공통 문자를 계산합니다.

샘플 소스 패턴

구문

DIFFERENCE( expression1, expression1 )
Copy

인자

expression1, expression2: 비교할 문자열 식입니다.

Return Type

Int.

쿼리

SELECT DIFFERENCE('Like', 'Mike');
Copy

결과

    Output |
-----------|
         3 |
Copy

JS 의 DIFFERENCE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

안타깝게도 이 기능은 JS 에서 사용할 수 없지만, 쉽게 구현할 수 있습니다.

참고

이 함수를 사용하려면 SOUNDEX 알고리즘 구현이 필요합니다.

샘플 소스 패턴

구현 예시

 function DIFFERENCE(strA, strB) {
    var count = 0;
    for (var i = 0; i < strA.length; i++){
       if ( strA[i] == strB[i] ) count++; 
    }
    
    return count;
}
Copy
인자

strA, strB: SOUNDEX 알고리즘을 실행하여 얻은 문자열 식입니다.

Return Type

문자열.

쿼리

 CREATE OR REPLACE FUNCTION SOUNDEX_DIFFERENCE(str_1 varchar, str_2 varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
    function DIFFERENCE(strA, strB) {
      var count = 0;
      for (var i = 0; i < strA.length; i++){
         if ( strA[i] == strB[i] ) count++; 
      }
    
    return count;
    }
    
    return DIFFERENCE(STR_1, STR_2);
$$;

SELECT SOUNDEX_DIFFERENCE(GET_SOUNDEX('two'), GET_SOUNDEX('too')) DIFFERENCE;
Copy
결과
   DIFFERENCE|
-------------|
            4| 
Copy

FORMAT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 형식과 선택적 culture로 포맷된 값을 반환합니다. (Transact-SQL 의 FORMAT).

샘플 소스 패턴

구문

FORMAT( value, format [, culture])
Copy

인자

value: 형식을 지정할 문자열 식입니다.

format: 원하는 형식입니다.

culture(선택 사항): 문화를 지정하는 NVarchar 인자입니다. 지정하지 않으면 현재 세션의 언어를 사용합니다.

Return Type

매개 변수가 유효하지 않은 경우 NULL, 그렇지 않으면 다음 데이터 타입을 따릅니다.

카테고리

.NET 타입

숫자

bigint

Int64

숫자

int

Int32

숫자

smallint

Int16

숫자

tinyint

바이트

숫자

소수점

SqlDecimal

숫자

숫자

SqlDecimal

숫자

float

Double

숫자

real

Single

숫자

smallmoney

Decimal

숫자

money

Decimal

날짜 및 시간

날짜

DateTime

날짜 및 시간

시간

TimeSpan

날짜 및 시간

날짜/시간

DateTime

날짜 및 시간

smalldatetime

DateTime

날짜 및 시간

datetime2

DateTime

날짜 및 시간

datetimeoffset

DateTimeOffset

쿼리

SELECT FORMAT(CAST('2022-01-24' AS DATE), 'd', 'en-gb')  AS 'Great Britain';
Copy

결과

  GREAT BRITAIN|
---------------|
     24/01/2022|  
Copy
쿼리
SELECT FORMAT(244900.25, 'C', 'cr-CR')  AS 'CURRENCY';
Copy
결과

CURRENCY

₡244,900.25

JS 의 FORMAT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

JavaScript 에서 날짜 및 정수 값의 형식을 지정하는 다양한 함수가 있습니다. 안타깝게도 이러한 함수는 1개의 방법으로 통합되어 있지 않습니다.

DateTime 값

구문

 Intl.DateTimeFormat( format ).format( value )
Copy
인자

locales (선택 사항): 적용할 형식의 문자열 식입니다.

options (선택 사항): 숫자 식의 형식에 대해 지원되는 속성이 다른 오브젝트(JavaScript NumberFormat 함수 설명서).

value: 형식화할 숫자 식입니다.

Return Type

문자열.

숫자값

구문

 Intl.NumberFormat( [locales [, options]] ).format( value )
Copy
인자

locales (선택 사항): 적용할 형식의 문자열 식입니다.

options (선택 사항): 숫자 식의 형식에 대해 지원되는 속성이 다른 오브젝트(JavaScript NumberFormat 함수 설명서).

value: 형식화할 숫자 식입니다.

Return Type

문자열.

DateTime

쿼리
 CREATE OR REPLACE FUNCTION format_date(date timestamp, format varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  return new Intl.DateTimeFormat( FORMAT ).format( DATE );
$$;
SELECT FORMAT_DATE(TO_DATE('2022-01-24'), 'en-gb') GREAT_BRITAIN;
Copy
결과
  GREAT_BRITAIN|      
---------------|
     24/01/2022|  
Copy

숫자

쿼리
 CREATE OR REPLACE FUNCTION format_numeric(number float, locales varchar, options variant)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  return new Intl.NumberFormat( LOCALES , OPTIONS ).format( NUMBER );
$$;
SELECT FORMAT_NUMERIC(244900.25, 'de-DE', PARSE_JSON('{ style: "currency", currency: "CRC" }')) CURRENCY;
Copy
결과
       CURRENCY|      
---------------|
 244.900,25 CRC|  
Copy

PATINDEX

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 식에서 패턴이 처음 발생한 시작 위치를 반환합니다. (Transact-SQL 의 PATINDEX).

샘플 소스 패턴

구문

PATINDEX( pattern, expression )
Copy

인자

pattern: 패턴을 찾습니다.

expression: 검색할 식입니다.

Return Type

정수. 패턴을 찾을 수 없으면 0을 반환합니다.

쿼리

SELECT PATINDEX( '%on%', 'No, no, non esistono più') AS [PATINDEX]
Copy

결과

    PATINDEX|      
------------|
          10|  
Copy

JS 의 검색

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

REGEX 를 사용하여 패턴의 인덱스를 찾습니다(JavaScript search 함수 설명서).

샘플 소스 패턴

구문

 String.search( regex )
Copy
인자

regex: 원하는 패턴과 일치하는 정규식입니다.

Return Type

정수. 패턴이 문자열의 어떤 부분과도 일치하지 않으면 -1을 반환합니다.

쿼리

 CREATE OR REPLACE FUNCTION get_index_pattern(pattern varchar, str varchar)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
  function GET_PATTERN(pattern, string){
    return string.search(new RegExp( pattern ));
    }
   return GET_PATTERN(PATTERN, STR) + 1;
$$;

SELECT GET_INDEX_PATTERN('on+', 'No, no, non esistono più') PATINDEX;
Copy
결과
    PATINDEX|      
------------|
          10|  
Copy

STR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

숫자 데이터에서 변환된 문자 데이터를 반환합니다. 문자 데이터는 지정된 길이와 소수점 이하 전체 자릿수로 오른쪽 정렬됩니다. (Transact-SQL 의 STR).

샘플 소스 패턴

구문

SQL 서버

STR ( float_expression [ , length [ , decimal ] ] ) 
Copy
Snowflake SQL
STR_UDF( numeric_expression, number_format )
Copy

인자

numeric_expression: 소수점이 있는 실수 식입니다.

length (선택 사항): 반환되는 식의 길이(포인트 표기법, 소수점 및 실수 부분 포함)입니다.

decimal(선택 사항): 소수점 이하 자릿수입니다.

Return Type

VARCHAR.

SQL 서버

입력:

/* 1 */
SELECT STR(123.5);

/* 2 */
SELECT STR(123.5, 2);

/* 3 */
SELECT STR(123.45, 6);

/* 4 */
SELECT STR(123.45, 6, 1);
Copy

출력:

1) 124
2) **
3) 123
4) 123.5
Copy

Snowflake SQL

입력:

/* 1 */
SELECT
PUBLIC.STR_UDF(123.5, '99999');

/* 2 */
SELECT
PUBLIC.STR_UDF(123.5, '99');

/* 3 */
SELECT
PUBLIC.STR_UDF(123.45, '999999');

/* 4 */
SELECT
PUBLIC.STR_UDF(123.45, '9999.9');
Copy

출력:

1) 124

2) ##

3) 123
4) 123.5
Copy

JS 의 STR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

안타깝게도 이 기능은 JS 에서 사용할 수 없지만, 문자열에 대해 미리 정의된 기능을 사용하여 쉽게 구현할 수 있습니다.

샘플 소스 패턴

구현 예시

 function validLength(number, max_length, float_precision) {
  var float_point = number.match(/[\.][0-9]+/);
  /*if the number does not have point float, checks if the float precision 
   * and current number are greater than max_length
   */
   if(!float_point) return number.length + float_precision + 1 < max_length; 
    //removes the '.' and checks if there is overflow with the float_precision
    return number.length - float_point[0].trim('.').length + float_precision  < max_length;
} 
 function STR(number, max_length, float_precision) {
  var number_str = number.toString();
   //if the expression exceeds the max_length, returns '**'
   if(number_str.length > max_length || float_precision > max_length) return '**';
   if(validLength(number_str, max_length, float_precision)) {
      return number.toFixed(float_precision);
    }
    return number.toFixed(max_length - float_precision);
}
Copy
인자

number: 소수점이 있는 실수 식입니다.

max_length: 반환되는 식의 길이(포인트 표기법, 소수점 및 실수 부분 포함)입니다.

float_precision: 소수점의 오른쪽 자릿수입니다.

Return Type

문자열.

쿼리

 CREATE OR REPLACE FUNCTION STR(number float, max_length float, float_precision float)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
    function validLength(number, max_length, float_precision) {
        var float_point = number.match(/[\.][0-9]+/);
        if(!float_point) return number.length + float_precision + 1 < max_length; 
        return number.length - float_point[0].trim('.').length + float_precision  < max_length;
    } 
    function STR(number, max_length, float_precision) {
      var number_str = number.toString();
      if(number_str.length > max_length || float_precision > max_length) return '**';
      if(validLength(number_str, max_length, float_precision)) {
        return number.toFixed(float_precision);
      }
      return number.toFixed(max_length - float_precision);
    }
    return STR( NUMBER, MAX_LENGTH, FLOAT_PRECISION );
$$;

SELECT STR(12345.674, 12, 6);
Copy
결과
           STR|
--------------|
  12345.674000| 
Copy

LTRIM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

선행 공백을 제거한 후 문자 식을 반환합니다. (Transact-SQL 의 LTRIM).

샘플 소스 패턴

구문

LTRIM( string_expression )
Copy

인자

string_expression: 변환할 문자열 식입니다.

Return Type

VARCHAR 또는 NVARCHAR

쿼리

SELECT LTRIM('  FIRST TWO BLANK SPACES') AS [LTRIM]
Copy

결과

                 LTRIM|      
----------------------|
FIRST TWO BLANK SPACES|  
Copy

JS 의 LTRIM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

안타깝게도 이 함수는 JavaScript 에서 사용할 수 없지만 정규식을 사용하여 구현할 수 있습니다.

샘플 소스 패턴

구현 예시

 function LTRIM(string){
    return string.replace(/^s+/,"");
}
Copy
인자

string: 공백을 제거하는 문자열 식입니다.

Return Type

문자열.

쿼리

 CREATE OR REPLACE FUNCTION ltrim(str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  function LTRIM(string){
    return string.replace(/^s+/,"");
    }
   return LTRIM(S TR );
$$;

SELECT LTRIM('  FIRST TWO BLANK SPACES') AS LTRIM;
Copy
결과
                 LTRIM|      
----------------------|
FIRST TWO BLANK SPACES|  
Copy

순위 지정 함수

이 섹션에서는 SnowFlake 의 저장 프로시저에서 사용하는 것을 중심으로 Transact-SQL 의 순위 지정 함수와 Snowflake SQL 및 JavaScript 코드에서 동일한 기능에 대해 설명합니다.

DENSE_RANK

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

이 함수는 결과 세트 파티션 내의 각 행의 순위를 반환하며, 순위 값에는 간격이 없습니다. 특정 행의 순위는 해당 특정 행 앞에 오는 고유 순위 값의 수에 1을 더한 값입니다. (Transact-SQL 의 DENSE_RANK).

샘플 소스 패턴

구문

SQL 서버
 DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > )  
Copy
Snowflake SQL

Snowflake SQL 설명서

 DENSE_RANK( )
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '1' COLUMN '15' OF THE SOURCE CODE STARTING AT 'OVER'. EXPECTED 'BATCH' GRAMMAR. CODE '80'. **
--              OVER ( [ <partition_by_clause> ] < order_by_clause > )
Copy

SQL 서버

SELECT TOP 10 BUSINESSENTITYID, NATIONALIDNUMBER, RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK FROM HUMANRESOURCES.EMPLOYEE AS TOTAL
Copy

결과:

BUSINESSENTITYID|NATIONALIDNUMBER|DENSE_RANK|
----------------|----------------|----------|
              57|10708100        |         1|
              54|109272464       |         2|
             273|112432117       |         3|
               4|112457891       |         4|
             139|113393530       |         5|
             109|113695504       |         6|
             249|121491555       |         7|
             132|1300049         |         8|
             214|131471224       |         9|
              51|132674823       |        10|
Copy
Snowflake SQL
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

결과:

BUSINESSENTITYID|NATIONALIDNUMBER|DENSE_RANK|
----------------|----------------|----------|
              57|10708100        |         1|
              54|109272464       |         2|
             273|112432117       |         3|
               4|112457891       |         4|
             139|113393530       |         5|
             109|113695504       |         6|
             249|121491555       |         7|
             132|1300049         |         8|
             214|131471224       |         9|
              51|132674823       |        10|
Copy

관련 EWIs

  • SSC-EWI-0001: 소스 코드 줄에 인식할 수 없는 토큰이 있습니다.

RANK

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

결과 세트의 파티션 내 각 행의 순위를 반환합니다. 행의 순위는 해당 행 앞에 오는 순위 수에 1을 더한 값입니다. (Transact-SQL 의 RANK).

샘플 소스 패턴

구문

SQL 서버
 RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )  
Copy
Snowflake SQL

Snowflake SQL 설명서

 RANK( )
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '1' COLUMN '9' OF THE SOURCE CODE STARTING AT 'OVER'. EXPECTED 'BATCH' GRAMMAR. CODE '80'. **
--        OVER ( [ partition_by_clause ] order_by_clause )
Copy

SQL 서버

SELECT TOP 10 BUSINESSENTITYID, NATIONALIDNUMBER, RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK FROM HUMANRESOURCES.EMPLOYEE AS TOTAL
Copy

결과:

BUSINESSENTITYID|NATIONALIDNUMBER|RANK|
----------------|----------------|----|
              57|10708100        |   1|
              54|109272464       |   2|
             273|112432117       |   3|
               4|112457891       |   4|
             139|113393530       |   5|
             109|113695504       |   6|
             249|121491555       |   7|
             132|1300049         |   8|
             214|131471224       |   9|
              51|132674823       |  10|
Copy
Snowflake SQL
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

결과:

BUSINESSENTITYID|NATIONALIDNUMBER|RANK|
----------------|----------------|----|
              57|10708100        |   1|
              54|109272464       |   2|
             273|112432117       |   3|
               4|112457891       |   4|
             139|113393530       |   5|
             109|113695504       |   6|
             249|121491555       |   7|
             132|1300049         |   8|
             214|131471224       |   9|
              51|132674823       |  10|
Copy

관련 EWIs

  • SSC-EWI-0001: 소스 코드 줄에 인식할 수 없는 토큰이 있습니다.

ROW_NUMBER

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

결과 세트의 출력을 숫자로 표시합니다. 보다 구체적으로, 각 파티션의 첫 번째 행에 대해 1부터 시작하여 결과 세트의 파티션 내에 있는 행의 일련 번호를 반환합니다. (Transact-SQL 의 ROW_NUMBER).

샘플 소스 패턴

구문

SQL 서버
 ROW_NUMBER ( )   
    OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )  
Copy
Snowflake SQL

Snowflake SQL 전체 설명서

 ROW_NUMBER( )
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '2' COLUMN '5' OF THE SOURCE CODE STARTING AT 'OVER'. EXPECTED 'BATCH' GRAMMAR. CODE '80'. **
--    OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
Copy

SQL 서버

SELECT 
ROW_NUMBER() OVER(ORDER BY NAME  ASC) AS RowNumber, 
NAME
FROM HUMANRESOURCES.DEPARTMENT
Copy

출력:

RowNumber|NAME                      |
---------|--------------------------|
        1|Document Control          |
        2|Engineering               |
        3|Executive                 |
        4|Facilities and Maintenance|
        5|Finance                   |
        6|Human Resources           |
        7|Information Services      |
        8|Marketing                 |
        9|Production                |
       10|Production Control        |
       11|Purchasing                |
       12|Quality Assurance         |
       13|Research and Development  |
       14|Sales                     |
       15|Shipping and Receiving    |
       16|Tool Design               |
Copy
Snowflake SQL
SELECT
ROW_NUMBER() OVER(ORDER BY NAME ASC) AS RowNumber,
NAME
FROM
HUMANRESOURCES.DEPARTMENT;
Copy

출력:

RowNumber|NAME                      |
---------|--------------------------|
        1|Document Control          |
        2|Engineering               |
        3|Executive                 |
        4|Facilities and Maintenance|
        5|Finance                   |
        6|Human Resources           |
        7|Information Services      |
        8|Marketing                 |
        9|Production                |
       10|Production Control        |
       11|Purchasing                |
       12|Quality Assurance         |
       13|Research and Development  |
       14|Sales                     |
       15|Shipping and Receiving    |
       16|Tool Design               |
Copy

관련 EWIs

  • SSC-EWI-0001: 소스 코드 줄에 인식할 수 없는 토큰이 있습니다.

논리 함수

이 섹션에서는 Transact-SQL의 논리 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명하는데, 특히 SnowFlake의 저장 프로시저 사용에 초점을 맞춥니다.

IIF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

부울 식이 true 또는 false으로 평가되는지 여부에 따라 두 값 중 하나를 반환합니다. (Transact-SQL 의 IIF).

샘플 소스 패턴

구문

SQL 서버
IIF( boolean_expression, true_value, false_value )
Copy
Snowflake SQL

Snowflake SQL 설명서

IFF( <condition> , <expr1> , <expr2> )
Copy

SQL 서버

SELECT IIF( 2 > 3, 'TRUE', 'FALSE' ) AS RESULT
Copy

결과:

RESULT|
------|
 FALSE|
Copy
Snowflake SQL
SELECT
IFF( 2 > 3, 'TRUE', 'FALSE' ) AS RESULT;
Copy

결과:

RESULT|
------|
 FALSE|
Copy

XML 함수

이 섹션에서는 Transact-SQL의 XML 함수가 Snowflake SQL로 어떻게 변환되는지 설명합니다.

쿼리

Applies to
  • SQL 서버

경고

이러한 변화는 향후에 제공될 예정입니다

설명

xml 데이터 타입의 인스턴스에 대해 XQuery 를 지정합니다. 결과는 xml 유형입니다. 이 메서드는 타입이 지정되지 않은XML 의 인스턴스를 반환합니다. (Transact-SQL Query())

샘플 소스 패턴

다음 예제에서는 .query( )에 대한 변환을 자세히 설명합니다

SQL 서버

입력
 CREATE TABLE xml_demo(object_col XML);

INSERT INTO xml_demo (object_col)
   SELECT
        '<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';

INSERT INTO xml_demo (object_col)
   SELECT
        '<Root>
<ProductDescription ProductID="2" ProductName="Skate">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';

SELECT
    xml_demo.object_col.query('/Root/ProductDescription/Features/Warranty') as Warranty,
    xml_demo.object_col.query('/Root/ProductDescription/Features/Maintenance') as Maintenance
from xml_demo;
Copy
출력
 Warranty                                     | Maintenance                                                                          |
----------------------------------------------|--------------------------------------------------------------------------------------|
<Warranty>1 year parts and labor</Warranty>   | <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>  |
<Warranty>1 year parts and labor</Warranty>   | <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>  |
Copy
Snowflake SQL
입력
 CREATE OR REPLACE TABLE xml_demo (
    object_col VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XML DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "07/11/2025",  "domain": "no-domain-provided" }}'
;

INSERT INTO xml_demo (object_col)
SELECT
        '<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';

INSERT INTO xml_demo (object_col)
SELECT
        '<Root>
<ProductDescription ProductID="2" ProductName="Skate">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';

SELECT
    XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Warranty') as Warranty,
    XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Maintenance') as Maintenance
from
    xml_demo;
Copy
출력
 Warranty                                     | Maintenance                                                                          |
----------------------------------------------|--------------------------------------------------------------------------------------|
<Warranty>1 year parts and labor</Warranty>   | <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>  |
<Warranty>1 year parts and labor</Warranty>   | <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>  |
Copy

Known Issues

문제가 발견되지 않았습니다.

관련 EWIs

  1. SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.

Applies to
  • SQL 서버

경고

이러한 변화는 향후에 제공될 예정입니다

설명

XML 에 대해 XQuery 를 수행하여 유형의 값을 반환합니다. 이 메서드는 스칼라 값을 반환합니다. (Transact-SQL value()).

샘플 소스 패턴

다음 예제에서는 .value()의 변환에 대해 자세히 설명합니다

SQL 서버

입력
 CREATE TABLE xml_demo(object_col XML);

INSERT INTO xml_demo (object_col)
   SELECT
        '<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';

INSERT INTO xml_demo (object_col)
   SELECT
        '<Root>
<ProductDescription ProductID="2" ProductName="Skate">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';

SELECT
    xml_demo.object_col.value('(/Root/ProductDescription/@ProductID)[1]', 'int' ) as ID,
    xml_demo.object_col.value('(/Root/ProductDescription/@ProductName)[1]', 'varchar(max)' ) as ProductName,
    xml_demo.object_col.value('(/Root/ProductDescription/Features/Warranty)[1]', 'varchar(max)' ) as Warranty
from xml_demo;
Copy
출력
 ID | ProductName | Warranty               |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |
Copy
Snowflake SQL
입력
 CREATE OR REPLACE TABLE xml_demo (
    object_col VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XML DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "07/11/2025",  "domain": "no-domain-provided" }}'
;

INSERT INTO xml_demo (object_col)
SELECT
        '<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';

INSERT INTO xml_demo (object_col)
SELECT
        '<Root>
<ProductDescription ProductID="2" ProductName="Skate">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';

SELECT
    GET(XMLGET(object_col, 'ProductDescription'), '@ProductID') :: INT as ID,
    GET(XMLGET(object_col, 'ProductDescription'), '@ProductName') :: VARCHAR as ProductName,
    GET(XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Warranty', 0), '$') :: VARCHAR as Warranty
from
    xml_demo;
Copy
출력
 ID | PRODUCTNAME | WARRANRTY              |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |
Copy

Known Issues

문제가 발견되지 않았습니다.

관련 EWIs

  1. SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.

집계 함수

이 섹션에서는 Transact-SQL의 집계 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명하는데, 특히 Snowflake의 UDFs 생성에 초점을 맞춥니다.

COUNT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

이 함수는 그룹에서 찾은 항목의 수를 반환합니다. COUNT 는 COUNT_BIG 함수처럼 작동합니다. 이러한 함수는 반환 값의 데이터 타입만 다릅니다. COUNT 는 항상 int 데이터 타입 값을 반환합니다. COUNT_BIG 은 항상 bigint 데이터 타입 값을 반환합니다. (Transact-SQL 의 COUNT).

샘플 소스 패턴

구문

SQL 서버
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )  
Copy
Snowflake SQL

Snowflake SQL 설명서

COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Copy

SQL 서버

SELECT COUNT(NATIONALIDNUMBER) FROM HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

결과:

TOTAL

290

Snowflake SQL
SELECT
COUNT(NATIONALIDNUMBER) FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

결과:

TOTAL

290

COUNT_BIG

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

이 함수는 그룹에서 찾은 항목의 수를 반환합니다. COUNT\BIG 은 COUNT 함수처럼 작동합니다. 이러한 함수는 반환 값의 데이터 타입만 다릅니다. COUNT\BIG 은 항상 bigint 데이터 타입 값을 반환합니다. COUNT 는 항상 int 데이터 타입 값을 반환합니다. (Transact-SQL 의 COUNT_BIG).

샘플 소스 패턴

구문

SQL 서버
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )  
Copy
Snowflake SQL

Snowflake SQL 설명서

COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Copy

SQL 서버

SELECT COUNT_BIG(NATIONALIDNUMBER) FROM HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

결과:

TOTAL

290

Snowflake SQL
SELECT
COUNT(NATIONALIDNUMBER) FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

결과:

TOTAL

290

SUM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

식에 있는 모든 값의 합계 또는 DISTINCT 값만 반환합니다. SUM 은 숫자 열에만 사용할 수 있습니다. Null 값은 무시됩니다. (Transact-SQL 의 SUM).

샘플 소스 패턴

구문

SQL 서버
SUM ( [ ALL | DISTINCT ] expression )  
Copy
Snowflake SQL

Snowflake SQL 설명서

SUM( [ DISTINCT ] <expr1> )
Copy

SQL 서버

SELECT SUM(VACATIONHOURS) FROM HUMANRESOURCES.EMPLOYEE AS TOTALVACATIONHOURS;
Copy

결과:

TOTALVACATIONHOURS

14678

Snowflake SQL
SELECT
SUM(VACATIONHOURS) FROM
HUMANRESOURCES.EMPLOYEE AS TOTALVACATIONHOURS;
Copy

결과:

TOTALVACATIONHOURS

14678

SnowConvert AI 사용자 지정 UDFs

설명

일부 Transact-SQL함수 또는 동작은 Snowflake에서 사용할 수 없거나 다르게 동작할 수 있습니다. 이러한 차이를 최소화하기 위해 일부 함수는 SnowConvert AI 사용자 지정 UDFs로 대체됩니다.

이러한 UDFs 는 마이그레이션 중에 UDF Helper 폴더의 Outpu 폴더 안에 자동으로 생성됩니다. 사용자 정의 UDF 당 1개의 파일이 있습니다.

OPENXML UDF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

이 사용자 정의 UDF 는 XML 문서를 통해 행 집합 뷰를 처리하기 위해 추가되었습니다. 이는 행 집합 공급자로 작동하기 때문에 선언에 사용됩니다.

이 버전의 UDF 에서 는선택적 매개 변수및 다른 노드 유형이 지원되지 않습니다. 요소 노드는 기본적으로 처리됩니다.

사용자 정의 UDF 오버로드

매개 변수

  1. XML: XML 의 읽을 수 있는 내용을 나타내는 VARCHAR 입니다.

  2. PATH: 행으로 처리할 노드의 패턴을 포함하는 varchar입니다.

UDF

CREATE OR REPLACE FUNCTION OPENXML_UDF(XML VARCHAR, PATH VARCHAR)
RETURNS TABLE(VALUE VARIANT)
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
SELECT VALUE from TABLE(FLATTEN(input=>XML_JSON_SIMPLE(PARSE_XML(XML)), path=>PATH))
$$;


CREATE OR REPLACE FUNCTION XML_JSON_SIMPLE(XML VARIANT)
RETURNS OBJECT
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
function toNormalJSON(xmlJSON) {
    var finalres = {};
    var name=xmlJSON['@'];
    var res = {};
    finalres[name] = res;
    for(var key in xmlJSON)
    {
        if (key == "@")
        {
            res["$name"] = xmlJSON["@"];
        }
        else if (key == "$") {
            continue;
        }
        else if (key.startsWith("@"))
        {
            // This is an attribute
            res[key]=xmlJSON[key];
        }
        else
        {
            var elements = xmlJSON['$']
            var value = xmlJSON[key];
            res[key] = [];
            if (Array.isArray(value))
            {
                for(var elementKey in value)
                {
                    var currentElement = elements[elementKey];
                    var fixedElement = toNormalJSON(currentElement);
                    res[key].push(fixedElement);
                }
            }
            else if (value === 0)
            {
                var fixedElement = toNormalJSON(elements);
                res[key].push(fixedElement);
            }
        }
    }
    return finalres;
}
return toNormalJSON(XML);
$$;
Copy
Transact-SQL
쿼리
DECLARE @idoc INT, @doc VARCHAR(1000);  
SET @doc ='  
<ROOT>  
<Customer CustomerID="VINET" ContactName="Paul Henriot">  
   <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">  
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>  
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>  
   </Order>  
</Customer>  
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">  
   <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">  
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>  
   </Order>  
</Customer>  
</ROOT>';  

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;  
 
SELECT *  FROM OPENXML (@idoc, '/ROOT/Customer',1)  
WITH (CustomerID  VARCHAR(10), ContactName VARCHAR(20)); 
Copy
결과
CustomerID  | ContactName
----------------------------|
VINET     | Paul Henriot
LILAS     | Carlos Gonzlez
Copy
Snowflake

참고

다음 예제는 환경 변수가 256바이트의 저장소만 지원하고 XML 데모 코드가 이 제한을 초과하여 사용하기 때문에 저장 프로시저로 분리되어 있습니다.

쿼리
DECLARE
IDOC INT;
DOC VARCHAR(1000);
BlockResultSet RESULTSET;
BEGIN
DOC := '  
<ROOT>  
<Customer CustomerID="VINET" ContactName="Paul Henriot">  
   <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">  
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>  
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>  
   </Order>  
</Customer>  
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">  
   <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">  
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>  
   </Order>  
</Customer>  
</ROOT>';
!!!RESOLVE EWI!!! /*** SSC-EWI-TS0075 - TRANSLATION FOR BUILT-IN PROCEDURE 'sp_xml_preparedocument' IS NOT CURRENTLY SUPPORTED. ***/!!!

EXEC sp_xml_preparedocument :IDOC OUTPUT, :DOC;
BlockResultSet := (

SELECT
Left(value:Customer['@CustomerID'], '10') AS 'CustomerID',
Left(value:Customer['@ContactName'], '20') AS 'ContactName'
FROM
OPENXML_UDF(:IDOC, ':ROOT:Customer'));
RETURN TABLE(BlockResultSet);
END;
Copy
결과

CustomerID

ContactName

VINET

Paul Henriot

LILAS

Carlos Gonzlez

쿼리
SET code = '<ROOT>  
<Customer CustomerID="VINET" ContactName="Paul Henriot">  
   <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">  
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>  
   </Order>  
</Customer>  
</ROOT>';
SELECT
Left(value:Customer['@CustomerID'],10) as "CustomerID",  
Left(value:Customer['@ContactName'],20) as "ContactName"
FROM TABLE(OPENXML_UDF($code,'ROOT:Customer'));
Copy
결과

CustomerID

ContactName

VINET

Paul Henriot

Known Issues

문제가 발견되지 않았습니다.

관련 EWIs

  1. SSC-EWI-TS0075: 지원되지 않는 내장 프로시저입니다.

STR UDF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 사용자 정의 UDF 는 숫자 데이터를 문자 데이터로 변환합니다.

사용자 정의 UDF 오버로드

매개 변수

  1. FLOAT_EXPR: varchar로 변환할 숫자 식입니다.

  2. FORMAT: 결과 varchar의 길이와 소수점 수가 포함된 varchar 식입니다. 이 형식은 SnowConvert 에서 자동으로 생성됩니다.

UDF
 CREATE OR REPLACE FUNCTION PUBLIC.STR_UDF(FLOAT_EXPR FLOAT, FORMAT VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
    TRIM(TRIM(SELECT TO_CHAR(FLOAT_EXPR, FORMAT)), '.')
$$;

CREATE OR REPLACE FUNCTION PUBLIC.STR_UDF(FLOAT_EXPR FLOAT)
RETURNS VARCHAR
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
    STR_UDF(FLOAT_EXPR, '999999999999999999')
$$;
Copy
Transact-SQL
쿼리
SELECT
    STR(123.5) as A,
    STR(123.5, 2) as B,
    STR(123.45, 6) as C,
    STR(123.45, 6, 1) as D;
Copy
결과

A

B

C

D

124

**

123

123.5

Snowflake
쿼리
SELECT
    PUBLIC.STR_UDF(123.5, '99999') as A,
    PUBLIC.STR_UDF(123.5, '99') as B,
    PUBLIC.STR_UDF(123.45, '999999') as C,
    PUBLIC.STR_UDF(123.45, '9999.9') as D;
Copy

SWITCHOFFSET_UDF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 사용자 정의 UDF 는 저장된 타임존 오프셋에서 지정된 새 타임존 오프셋으로 변경된 데이터타임오프셋 값을 반환하기 위해 추가되었습니다.

사용자 정의 UDF 오버로드

매개 변수

  1. source_timestamp: datetimeoffset(n) 값으로 확인할 수 있는 TIMESTAMP_TZ 입니다.

  2. target_tz: 타임존 오프셋을 나타내는 varchar입니다

UDF

CREATE OR REPLACE FUNCTION PUBLIC.SWITCHOFFSET_UDF(source_timestamp TIMESTAMP_TZ, target_tz varchar)
RETURNS TIMESTAMP_TZ
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS 
$$
WITH tz_values AS (
SELECT 
    RIGHT(source_timestamp::varchar, 5) as source_tz,
    
    REPLACE(source_tz::varchar, ':', '') as source_tz_clean,
    REPLACE(target_tz::varchar, ':', '') as target_tz_clean,
    
    target_tz_clean::integer - source_tz_clean::integer as offset,
    
    RIGHT(offset::varchar, 2) as tz_min,
    PUBLIC.OFFSET_FORMATTER(RTRIM(offset::varchar, tz_min)) as tz_hrs,
    
    
    TIMEADD( hours, tz_hrs::integer, source_timestamp ) as adj_hours,
    TIMEADD( minutes, (LEFT(tz_hrs, 1) || tz_min)::integer, adj_hours::timestamp_tz ) as new_timestamp
    
FROM DUAL)
SELECT 
    (LEFT(new_timestamp, 24) || ' ' || target_tz)::timestamp_tz
FROM tz_values
$$;

-- ==========================================================================
-- Description: The function OFFSET_FORMATTER(offset_hrs varchar) serves as
-- an auxiliar function to format the offter hours and its prefix operator.
-- ==========================================================================  
CREATE OR REPLACE FUNCTION PUBLIC.OFFSET_FORMATTER(offset_hrs varchar)
RETURNS varchar
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
CASE
   WHEN LEN(offset_hrs) = 0 THEN '+' || '0' || '0'
   WHEN LEN(offset_hrs) = 1 THEN '+' || '0' || offset_hrs
   WHEN LEN(offset_hrs) = 2 THEN
        CASE 
            WHEN LEFT(offset_hrs, 1) = '-' THEN '-' || '0' || RIGHT(offset_hrs, 1)
            ELSE '+' || offset_hrs
        END
    ELSE offset_hrs
END
$$;
Copy
Transact-SQL
쿼리
SELECT 
  '1998-09-20 7:45:50.71345 +02:00' as fr_time,
  SWITCHOFFSET('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;  
Copy
결과
SELECT 
  '1998-09-20 7:45:50.71345 +02:00' as fr_time,
  SWITCHOFFSET('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;  
Copy
Snowflake
쿼리
SELECT
  '1998-09-20 7:45:50.71345 +02:00' as fr_time,
  PUBLIC.SWITCHOFFSET_UDF('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;
Copy
결과

fr_time

cr_time

1998-09-20 7:45:50.71345 +02:00

1998-09-19 23:45:50.7134500 -06:00

메타데이터 함수

이 섹션에서는 Transact-SQL의 메타데이터 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명하는데, 특히 SnowFlake의 저장 프로시저 사용에 초점을 맞춥니다.

DB_NAME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 지정된 데이터베이스의 이름을 반환합니다. (Transact-SQL 의 DB_NAME).

샘플 소스 패턴

구문

SQL 서버
 DB_NAME ( [ database_id ] )  
Copy
Snowflake SQL

Snowflake SQL 설명서

 CURRENT_DATABASE() /*** SSC-FDM-TS0010 - CURRENT_DATABASE function has different behavior in certain cases ***/
Copy

SQL 서버

SELECT DB_NAME();
Copy

결과:

RESULT

ADVENTUREWORKS2019

Snowflake SQL
SELECT
CURRENT_DATABASE() /*** SSC-FDM-TS0010 - CURRENT_DATABASE function has different behavior in certain cases ***/;
Copy

결과:

RESULT

ADVENTUREWORKS2019

알려진 문제

1. CURRENT\DATABASE 함수는 특정 경우에 다른 동작을 합니다

DB\NAME 함수는 database_id 매개 변수를 사용하여 호출할 수 있으며, 이 함수는 지정된 데이터베이스의 이름을 반환합니다. 매개 변수가 없으면 함수는 현재 데이터베이스 이름을 반환합니다. 그러나 SnowFlake는 이 매개 변수를 지원하지 않으며 CURRENT_DATABASE 함수는 항상 현재 데이터베이스 이름을 반환합니다.

관련 EWIs

  1. SSC-FDM-TS0010: CURRENT_DATABASE 함수는 특정 경우에 다른 동작을 합니다.

OBJECT_ID

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 스키마 범위 오브젝트의 데이터베이스 오브젝트 식별 번호를 반환합니다.(Transact-SQL 의 OBJECT_ID).

SQL Server 구문

 OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]   
  object_name' [ ,'object_type' ] )
Copy

샘플 소스 패턴

1. Default transformation

SQL 서버
 IF OBJECT_ID_UDF('DATABASE2.DBO.TABLE1') is not null) THEN
            DROP TABLE IF EXISTS TABLE1;
        END IF;
Copy
Snowflake SQL
 BEGIN
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '1' COLUMN '0' OF THE SOURCE CODE STARTING AT 'IF'. EXPECTED 'If Statement' GRAMMAR. LAST MATCHING TOKEN WAS 'null' ON LINE '1' COLUMN '48'. FAILED TOKEN WAS ')' ON LINE '1' COLUMN '52'. CODE '70'. **
--IF OBJECT_ID_UDF('DATABASE2.DBO.TABLE1') is not null) THEN
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "TABLE1" **
DROP TABLE IF EXISTS TABLE1;
END;
Copy

2. Unknown database

SQL 서버
 IF OBJECT_ID_UDF('DATABASE1.DBO.TABLE1') is not null) THEN
            DROP TABLE IF EXISTS TABLE1;
        END IF;
Copy
Snowflake SQL
  IF (
 OBJECT_ID_UDF('DATABASE1.DBO.TABLE1') is not null) THEN
     DROP TABLE IF EXISTS TABLE1;
 END IF;
Copy

3. Different object names

SQL 서버
 IF OBJECT_ID_UDF('DATABASE1.DBO.TABLE2') is not null) THEN
            DROP TABLE IF EXISTS TABLE1;
        END IF;
Copy
Snowflake SQL
  IF (
 OBJECT_ID_UDF('DATABASE1.DBO.TABLE2') is not null) THEN
     DROP TABLE IF EXISTS TABLE1;
 END IF;
Copy

알려진 문제

1. OBJECT_ID_UDF 함수는 특정 경우에 다른 동작을 합니다

OBJECT\ID 는 오브젝트 식별 번호를 반환하지만OBJECT_ID_UDF 는 부울 값을 반환하므로OBJECT_ID 가 null 조건이 아닌 경우에만 동등하게 사용할 수 있습니다.

관련 EWIs

  • SSC-EWI-0001: 소스 코드 줄에 인식할 수 없는 토큰이 있습니다.

  • SSC-FDM-0007: 종속성이 누락된 요소

분석 함수

이 섹션에서는 Transact-SQL의 분석 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명하는데, 특히 Snowflake의 UDFs 생성에 초점을 맞춥니다.

LAG

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

SQL Server 2012(11.x)부터 자체 조인을 사용하지 않고 동일한 결과 세트의 이전 행에 있는 데이터에 액세스합니다. LAG는 현재 행 앞에 오는 지정된 물리적 오프셋의 행에 액세스할 수 있도록 합니다. SELECT 문의 이 분석 함수를 사용하여 현재 행의 값을 이전 행의 값과 비교합니다. (Transact-SQL의 COUNT).

샘플 소스 패턴

구문

SQL 서버
LAG (scalar_expression [,offset] [,default])  
    OVER ( [ partition_by_clause ] order_by_clause )  
Copy
Snowflake SQL

Snowflake SQL 설명서

COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Copy

SQL 서버

SELECT TOP 10 
LAG(E.VacationHours,1) OVER(ORDER BY E.NationalIdNumber) as PREVIOUS,
E.VacationHours AS ACTUAL 
FROM HumanResources.Employee E
Copy

결과:

PREVIOUS

ACTUAL

NULL

10

10

89

89

10

10

48

48

0

0

95

95

55

55

67

67

84

84

85

Snowflake SQL
SELECT TOP 10
LAG(E.VacationHours,1) OVER(ORDER BY E.NationalIdNumber) as PREVIOUS,
E.VacationHours AS ACTUAL
FROM
HumanResources.Employee E;
Copy

결과:

PREVIOUS

ACTUAL

NULL

10

10

89

89

10

10

48

48

0

0

95

95

55

55

67

67

84

84

85

데이터 타입 함수

이 섹션에서는 Transact-SQL의 데이터 타입 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명합니다.

DATALENGTH

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 식을 표현하는 데 사용된 바이트 수를 반환합니다. (Transact-SQL 의 DATALENGTH).

샘플 소스 패턴

구문

SQL 서버
DATALENGTH ( expression )   
Copy
Snowflake SQL

Snowflake SQL 설명서

OCTET_LENGTH(<string_or_binary>)
Copy

SQL 서버

SELECT DATALENGTH('SomeString') AS SIZE;
Copy

결과:

SIZE

10

Snowflake SQL
SELECT OCTET_LENGTH('SomeString') AS SIZE;
Copy

결과:

SIZE

10

수학 함수

이 섹션에서는 Transact-SQL의 수학 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명하는데, 특히 SnowFlake의 저장 프로시저 사용에 초점을 맞춥니다.

ABS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 숫자 식의 절대(양수) 값을 반환하는 수학 함수입니다. (ABS 는 음수 값을 양수 값으로 변경합니다. ABS 는 0 또는 양수 값에 영향을 주지 않습니다.) (Transact-SQL 의 ABS).

샘플 소스 패턴

구문

SQL 서버
ABS( expression )
Copy
Snowflake SQL

Snowflake SQL 설명서

ABS( <num_expr> )
Copy
JavaScript

JavaScript 전체 설명서

Math.abs( expression )
Copy

SQL 서버

SELECT ABS(-5);
Copy

결과:

ABS(-5)

5

Snowflake SQL
SELECT ABS(-5);
Copy

결과:

ABS(-5)

5

JavaScript
CREATE OR REPLACE FUNCTION compute_abs(a float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  return Math.abs(A);
$$
;
SELECT COMPUTE_ABS(-5);
Copy

결과:

COMPUTE_ABS(-5)

5

AVG

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

참고

SnowConvert AI 헬퍼 코드 섹션은 생략됩니다.

이 함수는 그룹 내 값의 평균을 반환합니다. Null 값을 무시합니다. (Transact-SQL 의 AVG).

샘플 소스 패턴

구문

SQL 서버
AVG ( [ ALL | DISTINCT ] expression )  
   [ OVER ( [ partition_by_clause ] order_by_clause ) ]
Copy
Snowflake SQL

Snowflake SQL 설명서

AVG( [ DISTINCT ] <expr1> )

AVG( [ DISTINCT ] <expr1> ) OVER (
                                 [ PARTITION BY <expr2> ]
                                 [ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
                                 )
Copy

SQL 서버

SELECT AVG(VACATIONHOURS) AS AVG_VACATIONS FROM HUMANRESOURCES.EMPLOYEE;
Copy

결과:

AVG_VACATIONS

50

Snowflake SQL
SELECT AVG(VACATIONHOURS) AS AVG_VACATIONS FROM HUMANRESOURCES.EMPLOYEE;
Copy

결과:

AVG_VACATIONS

50

CEILING

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수로 전송된 숫자보다 크거나 같은 가장 작은 정수를 반환하는 수학 함수입니다. (Transact-SQL 의 CEILING).

샘플 소스 패턴

구문

SQL 서버
CEILING( expression )
Copy
Snowflake SQL
CEIL( <input_expr> [, <scale_expr> ] )
Copy
JavaScript
 Math.ceil( expression )
Copy

SQL 서버

SELECT CEILING(642.20);
Copy

결과:

CEILING(642.20)

643

Snowflake SQL
SELECT CEIL(642.20);
Copy

결과:

CEIL(642.20)

643

JavaScript
CREATE OR REPLACE FUNCTION compute_ceil(a double)
RETURNS double
LANGUAGE JAVASCRIPT
AS
$$
  return Math.ceil(A);
$$
;
SELECT COMPUTE_CEIL(642.20);
Copy

결과:

COMPUTE_CEIL(642.20)|
--------------------|
                 643|
Copy

FLOOR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 숫자 식보다 작거나 같은 가장 큰 정수를 반환합니다. (Transact-SQL 의 FLOOR).

샘플 소스 패턴

구문

SQL 서버
FLOOR ( numeric_expression )  
Copy
Snowflake SQL

Snowflake SQL 설명서

FLOOR( <input_expr> [, <scale_expr> ] )
Copy

SQL 서버

SELECT FLOOR (124.87) AS FLOOR;
Copy

결과:

FLOOR|
-----|
  124|
Copy
Snowflake SQL
SELECT FLOOR (124.87) AS FLOOR;
Copy

결과:

FLOOR|
-----|
  124|
Copy

POWER

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 식의 값을 지정된 거듭제곱으로 반환합니다. (Transact-SQL 의 POWER).

샘플 소스 패턴

구문

SQL 서버
POWER ( float_expression , y )  
Copy
Snowflake SQL

Snowflake SQL 설명서

POW(x, y)

POWER (x, y)
Copy

SQL 서버

SELECT POWER(2, 10.0) AS IntegerResult
Copy

결과:

IntegerResult |
--------------|
          1024|
Copy
Snowflake SQL
SELECT POWER(2, 10.0) AS IntegerResult;
Copy

결과:

IntegerResult |
--------------|
          1024|
Copy

관련 설명서

ROUND

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 길이 또는 전체 자릿수로 반올림된 숫자 값을 반환합니다. (Transact-SQL의 ROUND)

샘플 소스 패턴

구문

SQL 서버
ROUND ( numeric_expression , length [ ,function ] )  
Copy
Snowflake SQL

Snowflake SQL 설명서

ROUND( <input_expr> [, <scale_expr> ] )
Copy

SQL 서버

SELECT ROUND(123.9994, 3) AS COL1, ROUND(123.9995, 3) AS COL2;  
Copy

결과:

COL1    |COL2    |
--------|--------|
123.9990|124.0000|
Copy
Snowflake SQL
SELECT ROUND(123.9994, 3) AS COL1,
ROUND(123.9995, 3) AS COL2;
Copy

결과:

COL1   | COL2  |
--------|------|
123.999|124.000|
Copy

관련 설명서

SQRT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 실수 값의 제곱 루트를 반환합니다. (Transact-SQL 의 SQRT).

샘플 소스 패턴

구문

SQL 서버
SQRT ( float_expression )  
Copy
Snowflake SQL

Snowflake SQL 설명서

SQRT(expr)
Copy

SQL 서버

SELECT SQRT(25) AS RESULT;
Copy

결과:

RESULT|
------|
   5.0|
Copy
Snowflake SQL
SELECT SQRT(25) AS RESULT;
Copy

결과:

RESULT|
------|
   5.0|
Copy

SQUARE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 실수 값의 제곱을 반환합니다. (Transact-SQL 의 SQUARE).

샘플 소스 패턴

구문

SQL 서버
SQUARE ( float_expression )  ****
Copy
Snowflake SQL

Snowflake SQL 설명서

SQUARE(expr)
Copy

SQL 서버

SELECT SQUARE (5) AS SQUARE;
Copy

결과:

SQUARE|
------|
  25.0|
Copy
Snowflake SQL
SELECT SQUARE (5) AS SQUARE;
Copy

결과:

SQUARE|
------|
    25|
Copy

STDEV

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

지정된 식에 있는 모든 값의 통계적 표준 편차를 반환합니다. (Transact-SQL 의 STDEV).

샘플 소스 패턴

구문

SQL 서버
 STDEV ( [ ALL | DISTINCT ] expression )  
Copy
Snowflake SQL

Snowflake SQL 설명서

 STDDEV( [ DISTINCT ] <expression_1> )
Copy

SQL 서버

SELECT
    STDEV(VACATIONHOURS)
FROM
    HUMANRESOURCES.EMPLOYEE AS STDEV;
Copy

결과:

           STDEV|
----------------|
28.7862150320948|
Copy
Snowflake SQL
SELECT
    STDDEV(VACATIONHOURS)
FROM
    HUMANRESOURCES.EMPLOYEE AS STDEV;
Copy

결과:

       STDEV|
------------|
28.786215034|
Copy

STDEVP

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

지정된 식의 모든 값에 대한 모집단의 통계적 표준 편차를 반환합니다. (Transact-SQL 의 STDVEP).

샘플 소스 패턴

구문

SQL 서버
STDEVP ( [ ALL | DISTINCT ] expression )  
Copy
Snowflake SQL

Snowflake SQL 설명서

STDDEV_POP( [ DISTINCT ] expression_1)
Copy

SQL 서버

SELECT
    STDEVP(VACATIONHOURS) AS STDEVP_VACATIONHOURS
FROM
    HumanResources.Employee;
Copy

결과:

STDEVP_VACATIONHOURS|
--------------------|
  28.736540767245085|
Copy
Snowflake SQL
SELECT
    STDDEV_POP(VACATIONHOURS) AS STDEVP_VACATIONHOURS
FROM
    HumanResources.Employee;
Copy

결과:

STDEVP_VACATIONHOURS|
--------------------|
        28.736540763|
Copy

VAR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

지정된 식에 있는 모든 값의 통계적 분산을 반환합니다. (Transact-SQL 의 VAR).

샘플 소스 패턴

구문

SQL 서버
VAR ( [ ALL | DISTINCT ] expression )  
Copy
Snowflake SQL
VAR_SAMP( [DISTINCT] <expr1> )
Copy

SQL 서버

SELECT
    VAR(VACATIONHOURS)
FROM
    HUMANRESOURCES.EMPLOYEE AS VAR;
Copy

결과:

             VAR|
----------------|
28.7862150320948|
Copy
Snowflake SQL
SELECT
    VAR_SAMP(VACATIONHOURS)
FROM
    HUMANRESOURCES.EMPLOYEE AS VAR;
Copy

결과:

       VAR|
----------|
828.646176|
Copy

POWER

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

특정 거듭제곱에 대해 지정된 식의 값을 반환합니다.\ (Transact-SQL 의 POWER).

샘플 소스 패턴

구문

POWER( base, exp )
Copy

인자

base: 숫자의 밑수, 부동 소수 식이어야 합니다.\ exp: 밑을 올리는 거듭제곱.

Return Type

반환 유형은 입력 식에 따라 다릅니다.

Input TypeReturn Type
float, realfloat
decimal(p, s)decimal(38, s)
int, smallint, tinyintint
bigintbigint
money, smallmoneymoney
bit, char, nchar, varchar, nvarcharfloat

쿼리

SELECT POWER(2, 3)
Copy

결과

POWER(2, 3)|
-----------|
        8.0|
Copy

JS 의 POW

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지수 거듭제곱의 밑을 반환합니다.\ (JavaScript POW 함수 설명서).

샘플 소스 패턴

구문

 Math.pow( base, exp )
Copy
인자

base: 숫자의 밑수, 부동 소수 식이어야 합니다.\ exp: 밑을 올리는 거듭제곱.

Return Type

매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.

쿼리

 CREATE OR REPLACE FUNCTION compute_pow(base float, exp float)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
    return Math.pow(BASE, EXP);
$$
;
SELECT COMPUTE_POW(2, 3);
Copy
결과
COMPUTE_POW(2, 3)|
-----------------|
                8|
Copy

ACOS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수로 전송된 숫자의 라디안 단위 아크사인을 반환하는 함수 (Transact-SQL 의 ACOS).

수학적으로 아코사인은 코사인의 역함수로 다음과 같이 정의할 수 있습니다.\ $$y = cos^ {-1}\왼쪽 화살표 x = cos(y)$$

For $$y = cos^{-1}(x)$$:
- Range: $$0\leqslant y \leqslant \pi$$ or $$0^{\circ}\leqslant y \leqslant 180^{\circ}$$
- Domain: $$-1\leqslant x \leqslant 1$$

샘플 소스 패턴

구문

ACOS ( expression )
Copy

인자

: 숫자 float 식, 여기서 식은 $$[-1,1]$$입니다.

Return Type

0과 π 사이의 숫자 실수 식입니다. 매개 변수로 전송된 숫자 식이 $$[-1, 1]$$ 영역을 벗어나면 데이터베이스 엔진에서 오류를 throw합니다.

쿼리

SELECT ACOS(-1.0);
Copy

결과

ACOS(-1.0)       |
-----------------|
3.141592653589793|
Copy

JS 의 ACOS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 숫자의 아크코사인을 반환하는 함수\ (JavaScript ACOS 함수 설명서).

샘플 소스 패턴

구문

 Math.acos( expression )
Copy
인자

: 숫자 식. 여기서 식은 $$[-1,1]$$입니다.

Return Type

0과 π 사이의 숫자 식입니다. 매개 변수로 전송된 숫자 식이 라디안 $$[-1, 1]$$의 아코신 범위를 벗어난 경우 함수는 NaN 을 반환합니다.

쿼리

 CREATE OR REPLACE FUNCTION compute_acos(a double)
  RETURNS double
  LANGUAGE JAVASCRIPT
AS
$$
  return Math.acos(A);
$$
;
SELECT COMPUTE_ACOS(-1);
Copy
결과
COMPUTE_ACOS(-1)|
---------------|
    3.141592654|
Copy

ASIN

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수로 전송된 숫자의 라디안 단위 아크사인을 반환하는 함수 (Transact-SQL 의 ASIN).

아크사인은 사인의 역함수로, \ $$y = sin^{-1} \Leftrightarrow x = sin(x)$$ 정의에 요약되어 있습니다.

$$y = sin^{-1}(x)$$의 경우:\ - 범위: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ or $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$\ - Domain: $$-1\leqslant x \leqslant 1$$

샘플 소스 패턴

구문

ASIN( expression )
Copy

인자

: 숫자 float 식, 여기서 식은 $$[-1,1]$$입니다.

Return Type

$$-\frac{\pi}{2}$$ ㅁ $$\frac{\pi}{2}$$ 사이의 숫자 부동소수점 식. 매개 변수로 전송된 숫자 식이 $$[-1, 1]$$에 없으면 데이터베이스 엔진에서 오류를 throw합니다.

쿼리

SELECT ASIN(0.5);
Copy

결과

ASIN(0.5)         |
------------------|
0.5235987755982989|
Copy

JS 의 ASIN

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 숫자의 아크사인을 반환하는 함수\ (JavaScript ASIN 함수 설명서).

샘플 소스 패턴

구문

 Math.asin( expression )
Copy
인자

: 숫자 식. 여기서 식은 $$[-1,1]$$입니다.

Return Type

$$-\frac{\pi}{2}$$ 및 $$\frac{\pi}{2}$$ 사이의 숫자 식입니다. 매개 변수로 전송된 숫자 식이 아코사인 $$[-1, 1]$$의 영역을 벗어난 경우 함수는 NaN 을 반환합니다.

쿼리

 CREATE OR REPLACE FUNCTION compute_asin(a float)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
  return Math.asin(A);
$$
;
SELECT COMPUTE_ASIN(0.5);
Copy
결과
COMPUTE_ASIN(1)   |
------------------|
      0.5235987756|
Copy

COS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수를 통해 전송된 각도의 코사인을 반환하는 함수(라디안 단위로 측정해야 함) (Transact-SQL 의 COS).

코사인의 정의:\ $$y = cos(x)$$\ 여기서:\ - Range: $$-1\leqslant y \leqslant 1$$\ - 영역: $$\mathbb{R}$$

샘플 소스 패턴

구문

COS( expression )
Copy

인자

expression: 숫자 float 식, 여기서 식은 $$\mathbb{R}$$에 있습니다.

Return Type

$$[-1, 1]$$의 숫자 실수 식입니다.

쿼리

SELECT COS(PI())
Copy

결과

COS(PI())|
---------|
     -1.0|
Copy

JS 의 COS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

각도의 코사인을 라디안 단위로 반환하는 정적 함수(JavaScript COS 함수 설명서).

샘플 소스 패턴

구문

 Math.cos( expression )
Copy
인자

식: 숫자 표현식.

Return Type

매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.

쿼리

CREATE OR REPLACE FUNCTION compute_cos(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  return Math.cos(ANGLE); 
$$
;
SELECT COMPUTE_COS(PI());
Copy
결과
COMPUTE_COS(PI())|
-----------------|
               -1|
Copy

COT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수를 통해 전송된 각도의 코탄젠트를 라디안 단위로 반환합니다(Transact-SQL 의 COT).

코사인의 정의: \ $$cot(x) =\frac {cos(x)}{sin(x)} $$ 또는 $$cot(x) =\frac {1}{tan(x)} $$\ 코사인을 계산하려면 매개 변수가 사인 및 cosine 함수의 제약 조건을 준수해야 합니다.

샘플 소스 패턴

구문

COT( expression )
Copy

인자

expression: 숫자 float 식, 여기서 식은 $$\mathbb{R}-{sin(expression)=0 \wedge tan(expression) =0}$$에 있습니다.

Return Type

$$\mathbb{R}$$의 숫자 float 식입니다.

쿼리

SELECT COT(1)
Copy

결과

COT(1)            |
------------------|
0.6420926159343306|
Copy

JS 의 COT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

안타깝게도 JavaScript 의 Math 오브젝트는 지정된 각도의 코탄젠트를 계산하는 방법을 제공하지 않습니다.\ 이는 $$cot(x) = \frac{cos(x)}{sin(x)}$$ 방정식을 사용하여 계산할 수 있습니다

샘플 소스 패턴

구현 예시

 function cot(angle){
    return Math.cos(angle)/Math.sin(angle);
}
Copy
인자

각도: 라디안 단위의 숫자 식입니다.

Return Type

매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.

쿼리

CREATE OR REPLACE FUNCTION compute_cot(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  function cot(angle){
    return Math.cos(angle)/Math.sin(angle);
  }
  return cot(ANGLE);
    
$$
;
SELECT COMPUTE_COT(1);
Copy
결과
COMPUTE_COT(1);   |
------------------|
0.6420926159343308|
Copy

RADIANS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

도를 라디안으로 변환합니다.\ (Transact-SQL 의 RADIANS).

샘플 소스 패턴

구문

RADIANS( expression )
Copy

인자

: 도 단위의 숫자 식입니다.

Return Type

매개 변수를 통해 전송된 데이터 타입이 라디안 단위의 숫자 식과 동일합니다.

쿼리

SELECT RADIANS(180.0)
Copy

결과

RADIANS(180)

3.141592653589793116

참고

이 함수의 매개 변수를 float로 형변환하면 위의 문은 PI 값 대신 3을 반환합니다.

JS 의 RADIANS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

JavaScript 는 지정된 각도의 각도를 라디안으로 변환하는 방법을 제공하지 않습니다.\ 이는 $$Radians = \frac{\pi}{180^{\circ}} \cdot angle$$ 공식을 사용하여 계산할 수 있습니다

샘플 소스 패턴

구현 예시

 function radians(angle){
    return (Math.PI/180) * angle;
}
Copy
인자

각도: 도 단위의 부동 소수점 식입니다.

Return Type

매개 변수를 통해 전송된 데이터 타입이 라디안 단위의 숫자 식과 동일합니다.

쿼리

CREATE OR REPLACE FUNCTION RADIANS(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
    function radians(angle){
      return (Math.PI/180) * angle;
    }
    return radians(ANGLE);
$$
;
SELECT RADIANS(180);
Copy
결과

RADIANS(180)

3.141592654

PI

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

PI 의 값을 반환합니다.\ (Transact-SQL 의 PI).

샘플 소스 패턴

구문

PI( )
Copy

인자

이 메서드는 매개 변수를 수신하지 않습니다.

Return Type

부동소수점.

쿼리

CREATE PROCEDURE CIRCUMFERENCE @radius float
AS 
    SELECT 2 * PI() * @radius;
GO:

EXEC CIRCUMFERENCE @radius = 2;
Copy

결과

CIRCUMFERENCE @radius = 2 |
--------------------------|
          12.5663706143592|
Copy

JS 의 PI

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

PI 숫자(약 3.141592…)를 나타내는 상수\ (JavaScript PI 설명서).

샘플 소스 패턴

구문

 Math.PI
Copy

쿼리

CREATE OR REPLACE FUNCTION circumference(radius float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  function circumference(r){
    return 2 * Math.PI * r;
  }
  return circumference(RADIUS); 
$$
;
SELECT CIRCUMFERENCE(2);
Copy
결과
  CIRCUMFERENCE(2)|
------------------|
12.566370614359172|
Copy

DEGREES

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수를 통해 전송된 라디안 단위의 각도를 도 단위로 변환합니다(Transact-SQL 의 DEGREES).

샘플 소스 패턴

구문

DEGREES( expression )
Copy

인자

: 라디안 단위의 숫자 float 식입니다.

Return Type

매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.

쿼리

SELECT DEGREES(PI())
Copy

결과

DEGREES(PI())|
-------------|
        180.0|
Copy

JS 의 DEGREES

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

JavaScript 는 라디안을 지정된 각도의 각도로 변환하는 방법을 제공하지 않습니다.\ 이 각도는 $$Degrees = \frac{180^{\circ}}{\pi} \cdot angle$$ 공식을 사용하여 계산할 수 있습니다.

샘플 소스 패턴

구현 예시

 function degress(angle){
    return (180/Math.PI) * angle;
}
Copy
인자

각도: 라디안 단위의 숫자 식입니다.

Return Type

매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.

쿼리

CREATE OR REPLACE FUNCTION compute_degrees(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  function degrees(angle){
    return (180/Math.PI) * angle;
  }
  return degrees(ANGLE);
    
$$
;
SELECT COMPUTE_DEGREES(PI());
Copy
결과
COMPUTE_DEGREES(PI())|
---------------------|
                180.0|
Copy

LOG

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

숫자의 자연 로그를 반환합니다\ (Transact-SQL 의 LOG).

샘플 소스 패턴

구문

LOG( expression [, base ] )
Copy

인자

: 숫자 식입니다.

base (선택 사항): 숫자의 로그를 계산하는 밑으로, 기본값은 오일러입니다.

Return Type

부동소수점.

쿼리

SELECT LOG(8, 2)
Copy

결과

LOG(8, 2)  |
-----------|
          3|
Copy

JS 의 LOG

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

오일러의 수를 기본으로 사용하여 로그를 반환합니다. (JavaScript LOG 함수 설명서).

경고

안타깝게도 JavaScript 는 매개 변수를 통해 로그의 밑을 받는 메서드를 제공하지 않지만, 밑을 인자로 나누면 해결할 수 있습니다.

샘플 소스 패턴

구문

 Math.log( expression )
Copy
인자

: 숫자 식입니다. 양수여야 하며, 그렇지 않으면NaN 을 반환합니다.\

Return Type

매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.

쿼리

 CREATE OR REPLACE FUNCTION base_log(base float, exp float)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
  function getBaseLog(x, y){
    return Math.log(y)/Math.log(x);
  }
  return getBaseLog(EXP, BASE)
$$
;
SELECT BASE_LOG(2, 8);
Copy
결과
BASE_LOG(2, 8)|
--------------|
             3|
Copy

ATAN

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수로 전송된 숫자의 라디안 단위의 아크탄젠트를 반환하는 함수 (Transact-SQL 의 ATAN).

아크탄젠트는 탄젠트의 역함수로, $$y = arctan^{-1} \Leftrightarrow x = tan(x)$$ 정의에 요약되어 있습니다.\

$$y = tan^{-1}(x)$$의 경우:\ - 범위: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ 또는 $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$\ - 영역: $$\mathbb{R}$$

샘플 소스 패턴

구문

ATAN( expression )
Copy

인자

expression: 숫자 float 식 또는 float로 변환할 수 있는 숫자 유형입니다.

Return Type

$$-\frac{\pi}{2}$$ ㅁ $$\frac{\pi}{2}$$ 사이의 숫자 부동소수점 식.

쿼리

SELECT ATAN(-30);
Copy

결과

ATAN(-30)          |
-------------------|
-1.5374753309166493|
Copy

JS 의 ATAN

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 숫자의 아크탄젠트를 반환하는 함수\ (JavaScript ATAN 함수 설명서).

샘플 소스 패턴

구문

 Math.atan( expression )
Copy
인자

: 숫자 식입니다.

Return Type

$$-\frac{\pi}{2}$$ 및 $$\frac{\pi}{2}$$ 사이의 숫자 식입니다.

쿼리

 CREATE OR REPLACE FUNCTION compute_atan(a float)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
  return Math.atan(A);
$$
;
SELECT COMPUTE_ATAN(-30);
Copy
결과
COMPUTE_ATAN(-30)|
-----------------|
     -1.537475331|
Copy

ATN2

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

매개 변수로 전송된 두 좌표의 라디안 단위의 아크탄젠트를 반환하는 함수(Transact-SQL 의 ATN2).

$$z = tan^{-1}(x, y)$$의 경우:\ - 범위: $$-\pi\leqslant z \leqslant \pi$$ 또는 $$-180^{\circ}\leqslant z \leqslant 180^{\circ}$$\ - 영역: $$\mathbb{R}$$

샘플 소스 패턴

구문

ATN2( expression_1, expression_2 )
Copy

인자

expression1expression2: 숫자 식입니다.

Return Type

$$-\pi$$ ~ $$\pi$$ 사이의 숫자 식입니다.

쿼리

SELECT ATN2(7.5, 2);
Copy

결과

ATN2(7.5, 2)      |
------------------|
1.3101939350475555|
Copy

JS 의 ATAN2

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

두 매개 변수의 아크탄젠트를 반환하는 함수\ (JavaScript ATAN2 함수 설명서).

샘플 소스 패턴

구문

 Math.atan2( expression_1, expression_2 )
Copy
인자

expression_1expression_2: 숫자 표현식.

Return Type

$$-\pi$$ ~ $$\pi$$ 사이의 숫자 식입니다.

쿼리

CREATE OR REPLACE FUNCTION compute_atan2(x float, y float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  return Math.atan2(X, Y);
$$
;
SELECT COMPUTE_ATAN2(7.5, 2);
Copy
결과
ATAN2(7.5, 3)     |
------------------|
       1.310193935|
Copy

LOG10

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

숫자의 10차 로그를 반환합니다\ (Transact-SQL 의 LOG10).

샘플 소스 패턴

구문

LOG10( expression )
Copy

인자

expression: 숫자 식, 양수여야 합니다.

Return Type

부동소수점.

쿼리

SELECT LOG10(5)
Copy

결과

LOG10(5)         |
-----------------|
0.698970004336019|
Copy

JS 의 LOG10

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

숫자에서 밑의 10 로그를 반환합니다\ (JavaScript LOG10 함수 설명서).

샘플 소스 패턴

구문

 Math.log10( expression )
Copy
인자

: 숫자 식입니다. 양수여야 하며, 그렇지 않으면NaN 을 반환합니다.\

Return Type

매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.

쿼리

 CREATE OR REPLACE FUNCTION compute_log10(argument float)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
    return Math.log10(ARGUMENT);
$$
;
SELECT COMPUTE_LOG10(7.5);
Copy
결과
COMPUTE_LOG10(5)|
----------------|
    0.6989700043|
Copy

EXP

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

오일러 수의 지수값을 반환합니다(Transact-SQL 의 EXP).

샘플 소스 패턴

구문

EXP( expression )
Copy

인자

: 숫자 식입니다.

Return Type

매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.

쿼리

SELECT EXP(LOG(20)), LOG(EXP(20))  
GO 
Copy

결과

EXP(LOG(20))   |LOG(EXP(20))    |
---------------|----------------|
           20.0|            20.0|
Copy

JS 의 EXP

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

오일러의 수를 나타내는 상수(약 2.718…)\ (JavaScript 오일러 수 설명서).\ JavaScript 를 사용하면 오일러 지수만 지원하는 Transact-SQL 대신 이 상수를 사용하여 다양한 연산을 할 수 있습니다.

샘플 소스 패턴

구문

 Math.E
Copy

쿼리

CREATE OR REPLACE FUNCTION compute_exp(x float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  return Math.E**X;
$$
;
SELECT COMPUTE_EXP(LN(20)), LN(COMPUTE_EXP(20));
Copy
결과
COMPUTE_EXP(LOG(20))|LOG(COMPUTE_EXP(20))|
--------------------|--------------------|
                20.0|                20.0|
Copy

변환 함수

이 섹션에서는 Transact-SQL의 날짜 및 시간 함수와 기능적으로 동등한 Snowflake SQL 코드를 설명합니다.

CONVERT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

한 데이터 타입의 식을 다른 데이터 타입으로 변환합니다. (Transact-SQL 의 CONVERT).

샘플 소스 패턴

구문

SQL 서버
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )  
Copy
Snowflake SQL

Snowflake SQL 설명서

CAST( <source_expr> AS <target_data_type> )
Copy

SQL 서버

SELECT CONVERT(INT, '1998') as MyDate
Copy
결과

MyDate

1998

Snowflake SQL
SELECT
CAST('1998' AS INT) as MyDate;
Copy
결과

MYDATE

1998

날짜 유형을 varchar로 형 변환
SQL 서버
SELECT CONVERT(varchar, getdate(), 1) AS RESULT;
Copy
결과

RESULT

12/08/22

Swowflake SQL
SELECT
TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy') AS RESULT;
Copy
결과

RESULT

12/08/22

날짜 유형을 크기가 포함된 varchar로 변환하기
SQL 서버
SELECT CONVERT(varchar(2), getdate(), 1) AS RESULT;
Copy
결과

RESULT

07

Snowflake SQL
SELECT
LEFT(TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy'), 2) AS RESULT;
Copy
결과

RESULT

07

날짜 형변환에 지원되는 형식은 다음과 같습니다.

날짜 형식

코드

형식

1

mm/dd/yy

2

yy.mm.dd

3

dd/mm/yy

4

dd.mm.yy

5

dd-mm-yy

6

dd-Mon-yy

7

Mon dd, yy

10

mm-dd-yy

11

yy/mm/dd

12

yymmdd

23

yyyy-mm-dd

101

mm/dd/yyyy

102

yyyy.mm.dd

103

dd/mm/yyyy

104

dd.mm.yyyy

105

dd-mm-yyyy

106

dd Mon yyyy

107

Mon dd, yyyy

110

mm-dd-yyyy

111

yyyy/mm/dd

112

yyyymmdd

시간 형식

코드

형식

8

hh:mm:ss

14

hh:mm:ss:ff3

24

hh:mm:ss

108

hh:mm:ss

114

hh:mm:ss:ff3

날짜 및 시간 형식

0

Mon dd yyyy hh:mm AM/PM

9

Mon dd yyyy hh:mm:ss:ff3 AM/PM

13

dd Mon yyyy hh:mm:ss:ff3 AM/PM

20

yyyy-mm-dd hh:mm:ss

21

yyyy-mm-dd hh:mm:ss:ff3

22

mm/dd/yy hh:mm:ss AM/PM

25

yyyy-mm-dd hh:mm:ss:ff3

100

Mon dd yyyy hh:mm AM/PM

109

Mon dd yyyy hh:mm:ss:ff3 AM/PM

113

dd Mon yyyy hh:mm:ss:ff3

120

yyyy-mm-dd hh:mm:ss

121

yyyy-mm-dd hh:mm:ss:ff3

126

yyyy-mm-dd T hh:mm:ss:ff3

127

yyyy-mm-dd T hh:mm:ss:ff3

이슬람 달력 날짜

코드

형식

130

dd mmm yyyy hh:mi:ss:ff3 AM/PM

131

dd mmm yyyy hh:mi:ss:ff3 AM/PM

현재 코드와 일치하는 패턴이 없는 경우 yyyy-mm-dd hh:mm:ss 로 형식이 지정됩니다

TRY_CONVERT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

형변환이 성공하면 지정된 데이터 타입으로 형변환된 값을 반환하고, 그렇지 않으면 null을 반환합니다.

(SQL Server Language Reference TRY_CONVERT)

구문

TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )  
Copy

소스 패턴

기본 변환

이 함수를 변환하려면 먼저 TRY_CONVERT 의 매개 변수를 확인해야 합니다.

TRY_CONVERT( INT, 'test')
Copy

형변환해야 하는 식이 문자열인 경우 TRY_CAST 로 변환되며, 이는 Snowflake의 함수입니다.

TRY_CAST( 'test' AS INT)
Copy

TRY_CAST

TRY_CAST 는 TRY_CONVERT 와 동일한 변환을 공유합니다.

Sql Server
SELECT TRY_CAST('12345' AS NUMERIC) NUMERIC_RESULT,
 TRY_CAST('123.45' AS DECIMAL(20,2)) DECIMAL_RESULT,
 TRY_CAST('123' AS INT) INT_RESULT,
 TRY_CAST('123.02' AS FLOAT) FLOAT_RESULT,
 TRY_CAST('123.02' AS DOUBLE PRECISION) DOUBLE_PRECISION_RESULT,

 TRY_CAST('2017-01-01 12:00:00' AS DATE) DATE_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS DATETIME) DATETIME_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS SMALLDATETIME) SMALLDATETIME_RESULT,
 TRY_CAST('12:00:00' AS TIME) TIME_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP) TIMESTAMP_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS DATETIMEOFFSET) DATETIMEOFFSET_RESULT,

 TRY_CAST(1234 AS VARCHAR) VARCHAR_RESULT,
 TRY_CAST(1 AS CHAR) CHAR_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS SQL_VARIANT) SQL_VARIANT_RESULT,
 TRY_CAST('LINESTRING(-122.360 47.656, -122.343 47.656 )' AS GEOGRAPHY) GEOGRAPHY_RESULT;
Copy

결과는 TRY_CONVERT 의 예와 동일합니다.

Snowflake
SELECT
 TRY_CAST('12345' AS NUMERIC(38, 18)) NUMERIC_RESULT,
 TRY_CAST('123.45' AS DECIMAL(20,2)) DECIMAL_RESULT,
 TRY_CAST('123' AS INT) INT_RESULT,
 TRY_CAST('123.02' AS FLOAT) FLOAT_RESULT,
 TRY_CAST('123.02' AS DOUBLE PRECISION) DOUBLE_PRECISION_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS DATE) DATE_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP_NTZ(3)) DATETIME_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP_NTZ(0)) SMALLDATETIME_RESULT,
 TRY_CAST('12:00:00' AS TIME(7)) TIME_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS BINARY(8)) TIMESTAMP_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP_TZ(7)) DATETIMEOFFSET_RESULT,
 TO_VARCHAR(1234) VARCHAR_RESULT,
 TO_CHAR(1) CHAR_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS VARIANT) SQL_VARIANT_RESULT,
 TRY_CAST('LINESTRING(-122.360 47.656, -122.343 47.656 )' AS GEOGRAPHY) GEOGRAPHY_RESULT;
Copy

Known Issues

데이터 타입이 Varchar 또는 Char인 경우 다르게 변환됩니다.

TRY_CONVERT(VARCHAR, 1234);
TRY_CONVERT(CHAR, 1);
Copy

TRY_CAST 를 VARCHAR 또는 CHAR 과 함께 사용할 경우 오류가 발생하므로 다음과 같이 변환됩니다

TO_VARCHAR(1234);
TO_CHAR(1);
Copy

SQL_VARIANT 및 GEOGRAPHY의 데이터 타입도 마찬가지입니다.

TRY_CONVERT(SQL_VARIANT, '2017-01-01 12:00:00');
TRY_CONVERT(GEOGRAPHY, 'LINESTRING(-122.360 47.656, -122.343 47.656 )');
Copy

다음으로 변환됩니다

TO_VARIANT('2017-01-01 12:00:00');
TO_GEOGRAPHY('LINESTRING(-122.360 47.656, -122.343 47.656 )');
Copy

식이 문자열이 아닌 경우 TRY_CAST 는 문자열 식에서만 작동하므로 실패할 가능성이 매우 높습니다.

이 경우 다른 변환이 수행됩니다

TRY_CAST(14.85 AS INT)
Copy

다음으로 변환됩니다

CAST(14.85 AS INT) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/
Copy

이제 이러한 변환을 통해 함수를 어떻게 사용하느냐에 따라 문제가 발생할 수 있습니다. SqlServer 의 TRY_CONVERT 는 변환할 수 없는 경우 null을 반환합니다.

다음과 같은 논리를 수행하는 데 사용할 수 있습니다

SELECT 
    CASE
        WHEN TRY_CONVERT( INT, 'Expression') IS NULL
        THEN 'FAILED'
        ELSE 'SUCCEDDED'
    END;
Copy

TRY_CONVERT 조건은 TRY_CAST 과 함께 사용할 수 있지만, TO_VARCHAR 또는 CAST 로 변환하면 어떻게 될까요? 해당 함수에서 변환에 실패하면 null을 반환하는 대신 오류를 발생시킵니다.

이 샘플에는 데이터 타입이 다른 TRY_CONVERT 가 여러 개 있습니다

SQL 서버
SELECT TRY_CONVERT(NUMERIC, '12345') NUMERIC_RESULT,
 TRY_CONVERT(DECIMAL(20,2), '123.45') DECIMAL_RESULT,
 TRY_CONVERT(INT, '123') INT_RESULT,
 TRY_CONVERT(FLOAT, '123.02') FLOAT_RESULT,
 TRY_CONVERT(DOUBLE PRECISION, '123.02') DOUBLE_PRECISION_RESULT,

 TRY_CONVERT(DATE, '2017-01-01 12:00:00') DATE_RESULT,
 TRY_CONVERT(DATETIME, '2017-01-01 12:00:00') DATETIME_RESULT,
 TRY_CONVERT(SMALLDATETIME, '2017-01-01 12:00:00') SMALLDATETIME_RESULT,
 TRY_CONVERT(TIME, '12:00:00') TIME_RESULT,
 TRY_CONVERT(TIMESTAMP, '2017-01-01 12:00:00') TIMESTAMP_RESULT,
 TRY_CONVERT(DATETIMEOFFSET, '2017-01-01 12:00:00') DATETIMEOFFSET_RESULT,

 TRY_CONVERT(VARCHAR, 1234) VARCHAR_RESULT,
 TRY_CONVERT(CHAR, 1) CHAR_RESULT,
 TRY_CONVERT(SQL_VARIANT, '2017-01-01 12:00:00') SQL_VARIANT_RESULT,
 TRY_CONVERT(GEOGRAPHY, 'LINESTRING(-122.360 47.656, -122.343 47.656 )') GEOGRAPHY_RESULT;
Copy

해당 선택 항목을 마이그레이션하면 다음과 같은 결과가 표시됩니다

Snowflake
SELECT
 CAST('12345' AS NUMERIC(38, 18)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ NUMERIC_RESULT,
 CAST('123.45' AS DECIMAL(20,2)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DECIMAL_RESULT,
 CAST('123' AS INT) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ INT_RESULT,
 CAST('123.02' AS FLOAT) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ FLOAT_RESULT,
 CAST('123.02' AS DOUBLE PRECISION) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DOUBLE_PRECISION_RESULT,
 CAST('2017-01-01 12:00:00' AS DATE) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DATE_RESULT,
 CAST('2017-01-01 12:00:00' AS TIMESTAMP_NTZ(3)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DATETIME_RESULT,
 CAST('2017-01-01 12:00:00' AS TIMESTAMP_NTZ(0)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ SMALLDATETIME_RESULT,
 CAST('12:00:00' AS TIME(7)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ TIME_RESULT,
 CAST('2017-01-01 12:00:00' AS BINARY(8)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ TIMESTAMP_RESULT,
 CAST('2017-01-01 12:00:00' AS TIMESTAMP_TZ(7)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DATETIMEOFFSET_RESULT,
 TO_VARCHAR(1234) VARCHAR_RESULT,
 TO_CHAR(1) CHAR_RESULT,
 TO_VARIANT('2017-01-01 12:00:00') SQL_VARIANT_RESULT,
 TO_GEOGRAPHY('LINESTRING(-122.360 47.656, -122.343 47.656 )') GEOGRAPHY_RESULT;
Copy

각각을 실행하고 결과를 비교해 보겠습니다.

별칭

SqlServer 결과

Snowflake 결과

NUMERIC_RESULT

12345

12345

DECIMAL_RESULT

123.45

123.45

INT_RESULT

123

123

FLOAT_RESULT

123.02

123.02

DOUBLE_PRECISION_RESULT

123.02

123.02

DATE_RESULT

2017-01-01

2017-01-01

DATETIME_RESULT

2017-01-01 12:00:00.000

2017-01-01 12:00:00.000

SMALLDATETIME_RESULT

2017-01-01 12:00:00

2017-01-01 12:00:00.000

TIME_RESULT

12:00:00.0000000

12:00:00

TIMESTAMP_RESULT

0x323031372D30312D

2017-01-01 12:00:00.000

DATETIMEOFFSET_RESULT

2017-01-01 12:00:00.0000000 +00:00

2017-01-01 12:00:00.000 -0800

VARCHAR_RESULT

1234

1234

CHAR_RESULT

1

1

SQL_VARIANT_RESULT

2017-01-01 12:00:00

“2017-01-01 12:00:00”

GEOGRAPHY_RESULT

0xE610000001148716D9CEF7D34740D7A3703D0A975EC08716D9CEF7D34740CBA145B6F3955EC0

{ “coordinates”: [ [ -122.36, 47.656 ], [ -122.343, 47.656 ] ], “type”: “LineString” }

관련 EWIs

  1. SSC-FDM-TS0005: TRY_CONVERT/TRY_CAST 를 TRY_CAST 로 변환할 수 없습니다.

날짜 및 시간 함수

이 섹션에서는 Transact-SQL의 날짜 및 시간 함수와 기능적으로 동등한 Snowflake SQL 및 JavaScript 코드를 설명합니다.

AT TIME ZONE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

_inputdate_를 대상 타임존의 해당 datetimeoffset 값으로 변환합니다. (Transact-SQL 의 AT TIME ZONE).

샘플 소스 패턴

구문

SQL 서버
inputdate AT TIME ZONE timezone
Copy
Snowflake SQL

Snowflake SQL 설명서

CONVERT_TIMEZONE( <source_tz> , <target_tz> , <source_timestamp_ntz> )

CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
Copy

SQL 서버

SELECT CAST('2022-11-24 11:00:45.2000000 +00:00' as datetimeoffset) at time zone 'Alaskan Standard Time';
Copy

결과:

                          DATE|
------------------------------|
2022-11-24 02:00:45.200 -09:00|
Copy
Snowflake SQL
SELECT
CONVERT_TIMEZONE('America/Anchorage', CAST('2022-11-24 11:00:45.2000000 +00:00' as TIMESTAMP_TZ(7)));
Copy

결과:

                          DATE|
------------------------------|
2022-11-24 02:00:45.200 -09:00|
Copy
SQL 서버
SELECT current_timestamp at time zone 'Central America Standard Time';
Copy

결과:

                          DATE|
------------------------------|
2022-10-10 10:55:50.090 -06:00|
Copy
Snowflake SQL
SELECT
CONVERT_TIMEZONE('America/Costa_Rica', CURRENT_TIMESTAMP() /*** SSC-FDM-TS0024 - CURRENT_TIMESTAMP in At Time Zone statement may have a different behavior in certain cases ***/);
Copy

결과:

                          DATE|
------------------------------|
2022-10-10 10:55:50.090 -06:00|
Copy

Known Issues

  1. Snowflake는 SQL 서버가 지원하는 모든 타임존을 지원하지 않습니다. 지원되는 타임존은 이 링크에서 확인할 수 있습니다.

SQL 서버

SELECT current_timestamp at time zone 'Turks And Caicos Standard Time';
Copy

결과:

                          DATE|
------------------------------|
2022-12-14 20:04:18.317 -05:00| 
Copy
Snowflake SQL
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-TS0063 - TIME ZONE NOT SUPPORTED IN SNOWFLAKE ***/!!!
CURRENT_TIMESTAMP() at time zone 'Turks And Caicos Standard Time';
Copy

관련 EWIs

  1. SSC-FDM-TS0024:At Time Zone 문의 CURRENT_TIMESTAMP 는 특정 경우 동작이 다를 수 있습니다.

  2. SSC-EWI-TS0063: Snowflake에서 지원되지 않는 타임존입니다.

DATEADD

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 지정된 날짜의 지정된 날짜 부분을 나타내는 정수를 반환합니다. (Transact-SQL 의 DATEPART).

샘플 소스 패턴

구문

SQL 서버
DATEADD (datepart , number , date )  
Copy
Snowflake SQL

Snowflake SQL 설명서

DATEADD( <date_or_time_part>, <value>, <date_or_time_expr> )
Copy

SQL 서버

SELECT DATEADD(year,123, '20060731') as ADDDATE;  
Copy

결과:

                 ADDDATE|
------------------------|
 2129-07-31 00:00:00.000|
Copy
Snowflake SQL
SELECT
DATEADD(year, 123, '20060731') as ADDDATE;
Copy

결과:

                 ADDDATE|
------------------------|
 2129-07-31 00:00:00.000|
Copy

DATEDIFF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 지정된 시작 날짜와 종료 날짜 사이에 교차한 지정된 날짜 부분 경계의 개수(부호 있는 정수 값)를 반환합니다. (Transact-SQL 의 DATEDIFF).

샘플 소스 패턴

구문

SQL 서버
DATEDIFF ( datepart , startdate , enddate )  
Copy
Snowflake SQL

Snowflake SQL 설명서

DATEDIFF( <date_or_time_part>, <date_or_time_expr1>, <date_or_time_expr2> )
Copy

SQL 서버

SELECT DATEDIFF(year,'2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
Copy

결과:

DIFF

1

Snowflake SQL
SELECT DATEDIFF(year,'2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
Copy

결과:

DIFF

1

DATEFROMPARTS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 지정된 연도, 월, 일 값에 매핑되는 날짜 값을 반환합니다. (Transact-SQL 의 DATEFROMPARTS).

샘플 소스 패턴

구문

SQL 서버
DATEFROMPARTS ( year, month, day )  
Copy
Snowflake SQL

Snowflake SQL 설명서

DATE_FROM_PARTS( <year>, <month>, <day> )
Copy

SQL 서버

SELECT DATEFROMPARTS ( 2010, 12, 31 ) AS RESULT;  
Copy

결과:

RESULT

2022-12-12

Snowflake SQL
SELECT DATE_FROM_PARTS ( 2010, 12, 31 ) AS RESULT;
Copy

결과:

RESULT

2022-12-12

DATENAME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 지정된 날짜의 지정된 날짜 부분을 나타내는 문자 문자열을 반환합니다. (Transact-SQL 의 DATENAME).

샘플 소스 패턴

구문

SQL 서버
DATENAME ( datepart , date )  
Copy
Snowflake SQL

참고

이 변환은 입력에 따라 여러 함수를 사용합니다

DATE_PART( <date_or_time_part> , <date_or_time_expr> )
MONTHNAME( <date_or_timestamp_expr> )
DAYNAME( <date_or_timestamp_expr> )
Copy

SQL 서버

SELECT DATENAME(month, getdate()) AS DATE1,
DATENAME(day, getdate()) AS DATE2,
DATENAME(dw, GETDATE()) AS DATE3;
Copy

결과:

DATE1

DATE2

DATE3

May

3

Tuesday

Snowflake SQL
SELECT
MONTHNAME_UDF(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE1,
DAYNAME_UDF(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE2,
DAYNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE3;
Copy

결과:

DATE1

DATE2

DATE3

May

Tue

Tue

DATEPART

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 지정된 날짜의 지정된 날짜 부분을 나타내는 정수를 반환합니다. (Transact-SQL 의 DATEPART).

샘플 소스 패턴

구문

SQL 서버
DATEPART ( datepart , date )  
Copy
Snowflake SQL

Snowflake SQL 설명서

DATE_PART( <date_or_time_part> , <date_or_time_expr> )
Copy

SQL 서버

SELECT DATEPART(YEAR, '10-10-2022') as YEAR
Copy

결과:

YEAR

2022

Snowflake SQL
SELECT
DATE_PART(YEAR, '10-10-2022' :: TIMESTAMP) as YEAR;
Copy

결과:

YEAR

2022

DAY

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 지정된 날짜의 요일(월)을 나타내는 정수를 반환합니다. (Transact-SQL 의 DAY).

샘플 소스 패턴

구문

SQL 서버
DAY ( date )  
Copy
Snowflake SQL

Snowflake SQL 설명서

DAY( <date_or_timestamp_expr> )
Copy

SQL 서버

SELECT DAY('10-10-2022') AS DAY
Copy

결과:

DAY

10

Snowflake SQL
SELECT DAY('10-10-2022' :: TIMESTAMP) AS DAY;
Copy

결과:

DAY

10

EOMONTH

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

이 함수는 지정된 날짜가 포함된 월의 마지막 날을 오프셋 옵션과 함께 반환합니다. (Transact-SQL 의 EOMONTH).

샘플 소스 패턴

구문

SQL 서버
EOMONTH ( start_date [, month_to_add ] )  
Copy
Snowflake SQL

Snowflake SQL 설명서

LAST_DAY( <date_or_time_expr> [ , <date_part> ] )
Copy

SQL 서버

SELECT EOMONTH (GETDATE()) AS Result; 
Copy

결과:

RESULT

2022-05-31

Snowflake SQL
SELECT
LAST_DAY(DATEADD('month', 0, CURRENT_TIMESTAMP() :: TIMESTAMP)) AS Result;
Copy

결과:

RESULT

2022-05-31

GETDATE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

데이터베이스 타임존 오프셋 없이 현재 데이터베이스 시스템 타임스탬프를 datetime 값으로 반환합니다. (Transact-SQL 의 GETDATE).

샘플 소스 패턴

구문

SQL 서버
GETDATE() 
Copy
Snowflake SQL

Snowflake SQL 설명서

CURRENT_TIMESTAMP( [ <fract_sec_precision> ] )
Copy

SQL 서버

SELECT GETDATE() AS DATE;
Copy

결과:

DATE

2022-05-06 09:54:42.757

Snowflake SQL
SELECT CURRENT_TIMESTAMP() :: TIMESTAMP AS DATE;
Copy

결과:

DATE

2022-05-06 08:55:05.422

MONTH

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 _date_의 월을 나타내는 정수를 반환합니다. (Transact-SQL 의 MONTH).

샘플 소스 패턴

구문

SQL 서버
MONTH( date )  
Copy
Snowflake SQL

Snowflake SQL 설명서

MONTH ( <date_or_timestamp_expr> )
Copy

SQL 서버

SELECT MONTH('10-10-2022') AS MONTH
Copy

결과:

MONTH

10

Snowflake SQL
SELECT MONTH('10-10-2022' :: TIMESTAMP) AS MONTH;
Copy

결과:

MONTH

10

SWITCHOFFSET

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

SWITCHOFFSET 은 지정된 타임스탬프 값을 특정 시간대 오프셋으로 조정합니다. 이는 숫자 값을 통해 수행됩니다. 자세한 내용은 SWITCHOFFSET (Transact-SQL)에서 확인할 수 있습니다.

샘플 소스 패턴

구문

UDF 헬퍼는 기능적으로 동등하며 SQLServer 의 SWITCHOFFSET 함수와 동일한 구문을 공유합니다.

SQLServer
 SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   
Copy
Snowflake SQL
 SWITCHOFFSET_UDF ( timestamp_tz_expression, timezoneoffset_expression )   
Copy

SQLServer
SELECT
  '1998-09-20 7:45:50.71345 +02:00' as fr_time,
  SWITCHOFFSET('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;  
Copy

결과:

fr_time

cr_time

1998-09-20 7:45:50.71345 +02:00

1998-09-19 23:45:50.7134500 -06:00

Snowflake SQL
SELECT
  '1998-09-20 7:45:50.71345 +02:00' as fr_time,
  PUBLIC.SWITCHOFFSET_UDF('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;
Copy

결과:

fr_time

cr_time

1998-09-20 7:45:50.71345 +02:00

1998-09-19 23:45:50.7134500 -06:00

SYSDATETIME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

SQL 서버의 인스턴스가 실행 중인 컴퓨터의 날짜와 시간이 포함된 datetime2(7) 값을 반환합니다. (Transact-SQL 의 SYSDATETIME).

샘플 소스 패턴

구문

SQL 서버
SYSDATETIME ( )  
Copy
Snowflake SQL

Snowflake SQL 설명서

LOCALTIME()
Copy

SQL 서버

SELECT SYSDATETIME ( ) AS SYSTEM_DATETIME;
Copy

결과:

SYSTEM_DATETIME

2022-05-06 12:08:05.501

Snowflake SQL
SELECT LOCALTIME ( ) AS SYSTEM_DATETIME;
Copy

결과:

SYSTEM_DATETIME

211:09:14

SYSUTCDATETIME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

SQL 서버의 인스턴스가 실행 중인 컴퓨터의 날짜와 시간이 포함된 datetime2(7) 값을 반환합니다. (Transact-SQL 의 SYSUTCDATETIME).

샘플 소스 패턴

구문

SQL 서버
SYSUTCDATETIME ( )  
Copy
Snowflake SQL

Snowflake SQL 설명서

SYSDATE()
Copy

SQL 서버

SELECT SYSUTCDATETIME() as SYS_UTC_DATETIME;
Copy

결과:

SYSTEM_UTC_DATETIME

2023-02-02 20:59:28.0926502

Snowflake SQL
SELECT
SYSDATE() as SYS_UTC_DATETIME;
Copy

결과:

SYSTEM_UTC_DATETIME

2023-02-02 21:02:05.557

YEAR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

지정된 _date_의 연도를 나타내는 정수를 반환합니다. (Transact-SQL 의 YEAR).

샘플 소스 패턴

구문

SQL 서버
YEAR( date )  
Copy
Snowflake SQL

Snowflake SQL 설명서

YEAR ( <date_or_timestamp_expr> )
Copy

SQL 서버

SELECT YEAR('10-10-2022') AS YEAR
Copy

결과:

YEAR

2022

Snowflake SQL
SELECT YEAR('10-10-2022' :: TIMESTAMP) AS YEAR;
Copy

결과:

YEAR

2022