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

Returns NULL if the value isn’t a number, otherwise returns the numeric value as its.
When using operators such as <, >, =, <> then must be followed by a NULL

CONVERT

CONVERT 확인

CAST 와 같은 동작

PARSE

*정의 예정

TRY_CAST

TRY_CAST

Returns NULL if the value isn’t a number, otherwise returns the numeric value as its.
When using operators such as <, >, =, <> then must be followed by a NULL

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

*정의 예정

VERIFYSIGNEDBYCERT

*정의 예정

커서

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

*정의 예정

This function receives two arguments: a datepart and date. It returns a string. Here are the supported dateparts from TSQL to Snowflake

year, yyyy, yy -> DATE_PART(YEAR, “$date”) quarter, qq, q -> DATE_PART(QUARTER, “$date”)
month, mm, m -> MONTHNAME( “$date”), though only providing a three-letter english month name
dayofyear, dy, y -> DATE_PART(DAYOFYEAR, “$date”)
day, dd, d -> DATE_PART(DAY, “$date”)
week, wk, ww -> DATE_PART(WEEK, “$date”)

weekday, dw -> DAYNAME(“$date”), though only providing an three-letter english day name
hour, hh -> DATE_PART(HOUR, “$date”)
minute, n -> DATE_PART(MINUTE, “$date”)
second, ss, s -> DATE_PART(SECOND, “$date”)
millisecond, ms -> DATE_PART(MS, “$date”) microsecond, mcs -> DATE_PART(US, “$date”)
nanosecond, ns -> DATE_PART(NS, “$date”)
TZoffset, tz -> needs a special implementation to get the time offset

DATEPART

DATE_PART

DATETIME2FROMPARTS

*정의 예정

DATETIMEFROMPARTS

*정의 예정

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

DATETIMEOFFSETFROMPARTS

*정의 예정

DAY

DAY

EOMONTH

*정의 예정

LAST_DAY 를 사용하여 모방 가능

GETDATE

GETDATE

GETUTCDATE

*정의 예정

CONVERT_TIMEZONE 을 사용하여 모방 가능

ISDATE

*정의 예정

Can be mimicked by using TRY_TO_DATE

Returns NULL if the value isn’t a date, otherwise returns the date value as its.
When using operators such as <, >, =, <> then must be followed by a NULL

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 )  
Snowflake SQL

Snowflake SQL 설명서

NVL( <expr1> , <expr2> )

SQL 서버

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

결과:

COMPANYNAME

SNOWFLAKE

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

결과:

COMPANYNAME

SNOWFLAKE

NEWID

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
NEWID ( )  
Snowflake SQL

Snowflake SQL 설명서

UUID_STRING()

경고

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

SQL 서버

SELECT NEWID ( ) AS ID;

결과:

ID

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

Snowflake SQL
SELECT
UUID_STRING( ) AS ID;

결과:

ID

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

NULLIF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
NULLIF ( check_expression , replacement_value )  
Snowflake SQL

Snowflake SQL 설명서

NULLIF( <expr1> , <expr2> )

SQL 서버

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

결과:

RESULT1

RESULT2

6

Null

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

결과:

RESULT1

RESULT2

6

Null

@@ROWCOUNT

Applies to
  • SQL 서버

설명

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

샘플 소스 패턴

구문

SQL 서버
@@ROWCOUNT
Snowflake SQL

Snowflake SQL 설명서

SQLROWCOUNT

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;

결과:

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();

결과:

: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 ] ] )  

SQL 서버

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

결과:

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;

결과:

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,)
$$;

이 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 )
Snowflake SQL

Snowflake SQL 전체 설명서

{CHR | CHAR} ( <input> )
JavaScript

JavaScript 전체 설명서

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

SQL 서버

SELECT CHAR(170) AS SMALLEST_A

출력:

SMALLEST_A

ª

Snowflake SQL
SELECT
CHAR(170) AS SMALLEST_A;

결과:

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;

결과:

SMALLEST_A

ª

CHARINDEX

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 전체 설명서

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

JavaScript 전체 설명서

String.indexOf( search_value [, index] )

SQL 서버

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

결과:

INDEX

33

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

결과:

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;

결과:

INDEX

33

COALESCE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

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

SQL 서버

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

결과:

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;

결과:

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 ] )  
Snowflake SQL

Snowflake SQL 전체 설명서

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

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

JavaScript 전체 설명서

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

SQL 서버

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

출력:

TITLE

Ray of Light

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

출력:

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;

출력:

   TITLE|

————| Ray of Light|

LEFT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
LEFT ( character_expression , integer_expression )  
Snowflake SQL

Snowflake SQL 전체 설명서

LEFT ( <expr> , <length_expr> )
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);

SQL 서버

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

출력:

FIRST_NAME

John

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

출력:

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;

출력:

FIRST_NAME

John

LEN

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
LEN( string_expression )
Snowflake SQL

Snowflake SQL 전체 설명서

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

JavaScript SQL 전체 설명서

 string.length

SQL 서버

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

출력:

LEN

11

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

출력:

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;

출력:

LEN

11

LOWER

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
LOWER ( character_expression )  
Snowflake SQL

Snowflake SQL 전체 설명서

LOWER( <expr> )
JavaScript

JavaScript SQL 전체 설명서

 String.toLowerCase( )

SQL 서버

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

출력:

LOWERCASE

you are a prediction of the good ones

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

출력:

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;

출력:

LOWERCASE

you are a prediction of the good ones

NCHAR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

NCHAR( expression )
인자

: 정수 식입니다.

Return Type

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

쿼리

SELECT NCHAR(170);
결과

ª

참고

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

REPLACE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 전체 설명서

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

SQL 서버

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

출력:

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

출력:

COLUMNNAME           |
---------------------|
Real computer science|
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;

\ 출력:

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

REPLICATE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
REPLICATE( string_expression, number_expression )
Snowflake SQL

Snowflake SQL 설명서

REPEAT(<input>, <n>)
JavaScript

JavaScript 설명서

String.repeat( number_expression )

SQL 서버

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

결과:

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

결과:

RESULT                                                           |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
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;

결과:

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

RTRIM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
RTRIM( string_expression )
Snowflake SQL

Snowflake SQL 전체 설명서

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

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

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

SQL 서버

입력:

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

출력:

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

결과:

RTRIM                |
---------------------|
LAST TWO BLANK SPACES|
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;

결과:

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

SPACE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
SPACE ( integer_expression )  
Snowflake SQL

Snowflake SQL 전체 설명서

SPACE(<n>)
JavaScript

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

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

SQL 서버

입력:

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

출력:

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

입력:

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

출력:

RESULT       |
-------------|
SOME     TEXT|
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;

출력:

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

SUBSTRING

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 전체 설명서

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

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

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

 string.substring( indexA [, indexB])

SQL 서버

입력:

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

출력:

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

결과:

SOMETEXT|
--------|
bcd     |
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;

결과:

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

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 ) 
Snowflake SQL

Snowflake SQL 전체 설명서

UPPER( <expr> )
JavaScript

JavaScript SQL 전체 설명서

 String.toUpperCase( )

SQL 서버

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

출력:

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

출력:

+-------------------------------------|
|UPPER                                |
+-------------------------------------|
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------|
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;

\ 출력:

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

ASCII

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

ASCII( expression )

인자

: VARCVHAR 또는 CHAR 식.

Return Type

INT.

쿼리

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

결과

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

JS 의 ASCII

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 string.charCodeAt( [index] )
인자

인덱스 (선택 사항): 문자를 가져와 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;
결과
          A|          a|
-----------| ----------|
         65|         97|    

QUOTENAME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

QUOTENAME( string_expression [, quote_character])

인자

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

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

Return Type

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

쿼리

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

결과

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

JS 의 QUOTENAME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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;
결과
    HELLO|      
---------|
  `Hello`| 

CONCAT_WS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

인자

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

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

Return Type

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

쿼리

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

결과

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

JS 의 조인

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Array.join( separator )
인자

구분 기호: 조인할 문자.

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;
결과
        NAME|      
------------|
Mariah Carey|   

SOUNDEX

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SOUNDEX( string_expression )

인자

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

Return Type

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

쿼리

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

결과

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

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));
      
  }
인자

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;
결과
      TWO|      TOO|
---------|---------|
     T000|     T000| 

REVERSE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

REVERSE( string_expression )

인자

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

Return Type

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

쿼리

SELECT REVERSE('rotator') AS PALINDROME;

결과

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

JS 에서 반전

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

Return Type

문자열.

쿼리

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

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

STRING_ESCAPE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

STRING_ESCAPE( text, type )

인자

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

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

Return Type

VARCHAR.

쿼리

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

결과

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

JS 의 문자열화

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 JSON.stringify( value )
인자

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

Return Type

문자열.

쿼리

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

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

TRIM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

TRIM( string_expression )

인자

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

Return Type

VARCHAR 또는 NVARCHAR

SQL 서버

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

출력:

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

Snowflake SQL

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

출력:

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

JS 의 트림

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 String.trim( )
인자

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

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
결과
                           TRIM|      
-------------------------------|
FIRST AND LAST TWO BLANK SPACES|   

DIFFERENCE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DIFFERENCE( expression1, expression1 )

인자

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

Return Type

Int.

쿼리

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

결과

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

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;
}
인자

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;
결과
   DIFFERENCE|
-------------|
            4| 

FORMAT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

FORMAT( value, format [, culture])

인자

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';

결과

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

CURRENCY

₡244,900.25

JS 의 FORMAT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

DateTime 값

구문

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

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

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

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

Return Type

문자열.

숫자값

구문

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

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;
결과
  GREAT_BRITAIN|      
---------------|
     24/01/2022|  

숫자

쿼리
 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;
결과
       CURRENCY|      
---------------|
 244.900,25 CRC|  

PATINDEX

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

PATINDEX( pattern, expression )

인자

pattern: 패턴을 찾습니다.

expression: 검색할 식입니다.

Return Type

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

쿼리

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

결과

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

JS 의 검색

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 String.search( regex )
인자

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;
결과
    PATINDEX|      
------------|
          10|  

STR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버

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

인자

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);

출력:

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

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');

출력:

1) 124

2) ##

3) 123
4) 123.5

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);
}
인자

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);
결과
           STR|
--------------|
  12345.674000| 

LTRIM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

LTRIM( string_expression )

인자

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

Return Type

VARCHAR 또는 NVARCHAR

쿼리

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

결과

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

JS 의 LTRIM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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;
결과
                 LTRIM|      
----------------------|
FIRST TWO BLANK SPACES|  

순위 지정 함수

This section describes the functional equivalents of ranking functions in Transact-SQL to Snowflake SQL and JavaScript code, oriented to their usage in stored procedures in Snowflake.

DENSE_RANK

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

SQL 서버
 DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > )  
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 > )

SQL 서버

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

결과:

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|
Snowflake SQL
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;

결과:

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|

관련 EWIs

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

RANK

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
 RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )  
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 )

SQL 서버

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

결과:

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|
Snowflake SQL
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;

결과:

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|

관련 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 )  
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 )

SQL 서버

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

출력:

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               |
Snowflake SQL
SELECT
ROW_NUMBER() OVER(ORDER BY NAME ASC) AS RowNumber,
NAME
FROM
HUMANRESOURCES.DEPARTMENT;

출력:

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               |

관련 EWIs

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

논리 함수

This section describes the functional equivalents of logical functions in Transact-SQL to Snowflake SQL and JavaScript code, oriented to their usage in stored procedures in Snowflake.

IIF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

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

SQL 서버

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

결과:

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

결과:

RESULT|
------|
 FALSE|

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;
출력
 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>  |
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;
출력
 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>  |

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;
출력
 ID | ProductName | Warranty               |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |
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;
출력
 ID | PRODUCTNAME | WARRANRTY              |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |

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 ] | * } )  
Snowflake SQL

Snowflake SQL 설명서

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

SQL 서버

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

결과:

TOTAL

290

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

결과:

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 ] | * } )  
Snowflake SQL

Snowflake SQL 설명서

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

SQL 서버

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

결과:

TOTAL

290

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

결과:

TOTAL

290

SUM

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

SUM( [ DISTINCT ] <expr1> )

SQL 서버

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

결과:

TOTALVACATIONHOURS

14678

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

결과:

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);
$$;
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)); 
결과
CustomerID  | ContactName
----------------------------|
VINET     | Paul Henriot
LILAS     | Carlos Gonzlez
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;
결과

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'));
결과

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')
$$;
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;
결과

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;

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 auxiliary function to format the offset 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
$$;
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;  
결과
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;  
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;
결과

fr_time

cr_time

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

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

메타데이터 함수

This section describes the functional equivalents of metadata functions in Transact-SQL to Snowflake SQL and JavaScript code, oriented to their usage in stored procedures in Snowflake.

DB_NAME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
 DB_NAME ( [ database_id ] )  
Snowflake SQL

Snowflake SQL 설명서

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

SQL 서버

SELECT DB_NAME();

결과:

RESULT

ADVENTUREWORKS2019

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

결과:

RESULT

ADVENTUREWORKS2019

알려진 문제

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

DB_NAME function can be invoked with the database_id parameter, which returns the name of the specified database. Without parameters, the function returns the current database name. However, Snowflake does not support this parameter and the CURRENT_DATABASE function will always return the current database name.

관련 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' ] )

샘플 소스 패턴

1. Default transformation

SQL 서버
 IF OBJECT_ID_UDF('DATABASE2.DBO.TABLE1') is not null) THEN
            DROP TABLE IF EXISTS TABLE1;
        END IF;
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;

2. Unknown database

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

3. Different object names

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

알려진 문제

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 )  
Snowflake SQL

Snowflake SQL 설명서

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

SQL 서버

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

결과:

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;

결과:

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 )   
Snowflake SQL

Snowflake SQL 설명서

OCTET_LENGTH(<string_or_binary>)

SQL 서버

SELECT DATALENGTH('SomeString') AS SIZE;

결과:

SIZE

10

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

결과:

SIZE

10

수학 함수

This section describes the functional equivalents of mathematical functions in Transact-SQL to Snowflake SQL and JavaScript code, oriented to their usage in stored procedures in Snowflake.

ABS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
ABS( expression )
Snowflake SQL

Snowflake SQL 설명서

ABS( <num_expr> )
JavaScript

JavaScript 전체 설명서

Math.abs( expression )

SQL 서버

SELECT ABS(-5);

결과:

ABS(-5)

5

Snowflake SQL
SELECT ABS(-5);

결과:

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);

결과:

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 ) ]
Snowflake SQL

Snowflake SQL 설명서

AVG( [ DISTINCT ] <expr1> )

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

SQL 서버

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

결과:

AVG_VACATIONS

50

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

결과:

AVG_VACATIONS

50

CEILING

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

SQL 서버

SELECT CEILING(642.20);

결과:

CEILING(642.20)

643

Snowflake SQL
SELECT CEIL(642.20);

결과:

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);

결과:

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

FLOOR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
FLOOR ( numeric_expression )  
Snowflake SQL

Snowflake SQL 설명서

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

SQL 서버

SELECT FLOOR (124.87) AS FLOOR;

결과:

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

결과:

FLOOR|
-----|
  124|

POWER

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
POWER ( float_expression , y )  
Snowflake SQL

Snowflake SQL 설명서

POW(x, y)

POWER (x, y)

SQL 서버

SELECT POWER(2, 10.0) AS IntegerResult

결과:

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

결과:

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

관련 설명서

ROUND

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

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

SQL 서버

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

결과:

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

결과:

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

관련 설명서

SQRT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
SQRT ( float_expression )  
Snowflake SQL

Snowflake SQL 설명서

SQRT(expr)

SQL 서버

SELECT SQRT(25) AS RESULT;

결과:

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

결과:

RESULT|
------|
   5.0|

SQUARE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

SQUARE(expr)

SQL 서버

SELECT SQUARE (5) AS SQUARE;

결과:

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

결과:

SQUARE|
------|
    25|

STDEV

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

 STDDEV( [ DISTINCT ] <expression_1> )

SQL 서버

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

결과:

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

결과:

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

STDEVP

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

STDDEV_POP( [ DISTINCT ] expression_1)

SQL 서버

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

결과:

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

결과:

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

VAR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

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

SQL 서버

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

결과:

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

결과:

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

POWER

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

POWER( base, exp )

인자

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)

결과

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

JS 의 POW

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.pow( base, exp )
인자

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);
결과
COMPUTE_POW(2, 3)|
-----------------|
                8|

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 )

인자

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

Return Type

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

쿼리

SELECT ACOS(-1.0);

결과

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

JS 의 ACOS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.acos( expression )
인자

: 숫자 식. 여기서 식은 $$[-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);
결과
COMPUTE_ACOS(-1)|
---------------|
    3.141592654|

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 )

인자

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

Return Type

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

쿼리

SELECT ASIN(0.5);

결과

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

JS 의 ASIN

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.asin( expression )
인자

: 숫자 식. 여기서 식은 $$[-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);
결과
COMPUTE_ASIN(1)   |
------------------|
      0.5235987756|

COS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

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

샘플 소스 패턴

구문

COS( expression )

인자

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

Return Type

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

쿼리

SELECT COS(PI())

결과

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

JS 의 COS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.cos( expression )
인자

식: 숫자 표현식.

Return Type

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

쿼리

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

COT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

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

샘플 소스 패턴

구문

COT( expression )

인자

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

Return Type

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

쿼리

SELECT COT(1)

결과

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

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);
}
인자

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

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);
결과
COMPUTE_COT(1);   |
------------------|
0.6420926159343308|

RADIANS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

RADIANS( expression )

인자

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

Return Type

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

쿼리

SELECT RADIANS(180.0)

결과

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;
}
인자

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

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);
결과

RADIANS(180)

3.141592654

PI

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

PI( )

인자

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

Return Type

부동소수점.

쿼리

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

EXEC CIRCUMFERENCE @radius = 2;

결과

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

JS 의 PI

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.PI

쿼리

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);
결과
  CIRCUMFERENCE(2)|
------------------|
12.566370614359172|

DEGREES

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DEGREES( expression )

인자

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

Return Type

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

쿼리

SELECT DEGREES(PI())

결과

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

JS 의 DEGREES

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

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());
결과
COMPUTE_DEGREES(PI())|
---------------------|
                180.0|

LOG

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

LOG( expression [, base ] )

인자

: 숫자 식입니다.

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

Return Type

부동소수점.

쿼리

SELECT LOG(8, 2)

결과

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

JS 의 LOG

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

경고

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

샘플 소스 패턴

구문

 Math.log( expression )
인자

: 숫자 식입니다. 양수여야 하며, 그렇지 않으면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);
결과
BASE_LOG(2, 8)|
--------------|
             3|

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 )

인자

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

Return Type

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

쿼리

SELECT ATAN(-30);

결과

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

JS 의 ATAN

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.atan( expression )
인자

: 숫자 식입니다.

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);
결과
COMPUTE_ATAN(-30)|
-----------------|
     -1.537475331|

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 )

인자

expression1expression2: 숫자 식입니다.

Return Type

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

쿼리

SELECT ATN2(7.5, 2);

결과

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

JS 의 ATAN2

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.atan2( expression_1, expression_2 )
인자

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);
결과
ATAN2(7.5, 3)     |
------------------|
       1.310193935|

LOG10

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

LOG10( expression )

인자

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

Return Type

부동소수점.

쿼리

SELECT LOG10(5)

결과

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

JS 의 LOG10

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.log10( expression )
인자

: 숫자 식입니다. 양수여야 하며, 그렇지 않으면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);
결과
COMPUTE_LOG10(5)|
----------------|
    0.6989700043|

EXP

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

EXP( expression )

인자

: 숫자 식입니다.

Return Type

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

쿼리

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

결과

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

JS 의 EXP

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.E

쿼리

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));
결과
COMPUTE_EXP(LOG(20))|LOG(COMPUTE_EXP(20))|
--------------------|--------------------|
                20.0|                20.0|

변환 함수

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

CONVERT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

CAST( <source_expr> AS <target_data_type> )

SQL 서버

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

MyDate

1998

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

MYDATE

1998

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

RESULT

12/08/22

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

RESULT

12/08/22

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

RESULT

07

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

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 로 형식이 지정됩니다

Converting string to DATE or DATETIME with style

When CONVERT targets a DATE, DATETIME, or DATETIME2 type and includes a literal style code, SnowConvert AI maps it to TO_DATE or TO_TIMESTAMP with the corresponding Snowflake format string.

SQL 서버
SELECT
    CONVERT(DATE, StartDate, 101) AS StartDt,
    CONVERT(DATE, EndDate, 103) AS EndDt,
    CONVERT(DATETIME, EventTime, 120) AS EventTs
FROM Events
Snowflake SQL
SELECT
  TO_DATE(StartDate, 'mm/dd/yyyy') AS StartDt,
  TO_DATE(EndDate, 'dd/mm/yyyy') AS EndDt,
  TO_TIMESTAMP(EventTime, 'yyyy-mm-dd hh:mm:ss') AS EventTs
FROM
  Events;

The following table shows which target types produce TO_DATE versus TO_TIMESTAMP:

Target Type

Snowflake Function

DATE

TO_DATE

DATETIME

TO_TIMESTAMP

DATETIME2

TO_TIMESTAMP

Converting VARBINARY / BINARY with style

When converting to VARBINARY or BINARY with a hex style (1 or 2), SnowConvert AI maps to TO_BINARY(expr, 'HEX'). Style 0 (default/ASCII) maps to a plain CAST. For VARBINARY(MAX), the outer CAST is omitted.

SQL 서버
SELECT CONVERT(VARBINARY(16), @UGIDString, 0);
SELECT CONVERT(VARBINARY(16), @UGIDString, 1);
SELECT CONVERT(VARBINARY(MAX), @HexData, 2);
SELECT CONVERT(BINARY(16), @HexData, 1);
Snowflake SQL
SELECT CAST(@UGIDString AS VARBINARY(16));
SELECT CAST(TO_BINARY(@UGIDString, 'HEX') AS VARBINARY(16));
SELECT TO_BINARY(@HexData, 'HEX');
SELECT CAST(TO_BINARY(@HexData, 'HEX') AS BINARY(16));
Converting with a dynamic style variable

When the style argument is a variable or expression instead of a literal, SnowConvert AI cannot determine the format string at conversion time. The function falls back to CAST and emits SSC-EWI-TS0098.

SQL 서버
SELECT CONVERT(DATE, @InputDate, @Style)
Snowflake SQL
SELECT
  !!!RESOLVE EWI!!! /*** SSC-EWI-TS0098 - CONVERT WITH A VARIABLE OR EXPRESSION AS THE STYLE ARGUMENT CANNOT BE AUTOMATICALLY MAPPED TO A SNOWFLAKE FORMAT STRING. REPLACE WITH THE APPROPRIATE TO_DATE/TO_TIMESTAMP CALL WITH THE KNOWN FORMAT STRING. ***/!!!
  CAST(@InputDate AS DATE);

관련 EWIs

  1. SSC-EWI-TS0098: CONVERT with a non-literal style cannot be mapped to a Snowflake format string.

TRY_CONVERT

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

(SQL Server Language Reference TRY_CONVERT)

구문

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

소스 패턴

기본 변환

To transform this function, we have to check the parameters of the TRY_CONVERT first.

TRY_CONVERT( INT, 'test')

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

TRY_CAST( 'test' AS INT)

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;

결과는 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;

Known Issues

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

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

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

TO_VARCHAR(1234);
TO_CHAR(1);

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 )');

다음으로 변환됩니다

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

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

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

TRY_CAST(14.85 AS INT)

다음으로 변환됩니다

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

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

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

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

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;

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

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;

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

별칭

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
Snowflake SQL

Snowflake SQL 설명서

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

CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )

SQL 서버

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

결과:

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

결과:

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

결과:

                          DATE|
------------------------------|
2022-10-10 10:55:50.090 -06:00|
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 ***/);

결과:

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

Known Issues

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

SQL 서버

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

결과:

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

관련 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 )  
Snowflake SQL

Snowflake SQL 설명서

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

SQL 서버

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

결과:

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

결과:

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

DATEDIFF

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

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

SQL 서버

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

결과:

DIFF

1

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

결과:

DIFF

1

DATEFROMPARTS

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

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

SQL 서버

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

결과:

RESULT

2022-12-12

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

결과:

RESULT

2022-12-12

DATENAME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
DATENAME ( datepart , date )  
Snowflake SQL

참고

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

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

SQL 서버

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

결과:

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;

결과:

DATE1

DATE2

DATE3

May

Tue

Tue

DATEPART

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
DATEPART ( datepart , date )  
Snowflake SQL

Snowflake SQL 설명서

DATE_PART( <date_or_time_part> , <date_or_time_expr> )

SQL 서버

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

결과:

YEAR

2022

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

결과:

YEAR

2022

DAY

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
DAY ( date )  
Snowflake SQL

Snowflake SQL 설명서

DAY( <date_or_timestamp_expr> )

SQL 서버

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

결과:

DAY

10

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

결과:

DAY

10

EOMONTH

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Snowflake SQL 설명서

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

SQL 서버

SELECT EOMONTH (GETDATE()) AS Result; 

결과:

RESULT

2022-05-31

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

결과:

RESULT

2022-05-31

GETDATE

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
GETDATE() 
Snowflake SQL

Snowflake SQL 설명서

CURRENT_TIMESTAMP( [ <fract_sec_precision> ] )

SQL 서버

SELECT GETDATE() AS DATE;

결과:

DATE

2022-05-06 09:54:42.757

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

결과:

DATE

2022-05-06 08:55:05.422

MONTH

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
MONTH( date )  
Snowflake SQL

Snowflake SQL 설명서

MONTH ( <date_or_timestamp_expr> )

SQL 서버

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

결과:

MONTH

10

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

결과:

MONTH

10

SWITCHOFFSET

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

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

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;  

결과:

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;

결과:

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 ( )  
Snowflake SQL

Snowflake SQL 설명서

LOCALTIME()

SQL 서버

SELECT SYSDATETIME ( ) AS SYSTEM_DATETIME;

결과:

SYSTEM_DATETIME

2022-05-06 12:08:05.501

Snowflake SQL
SELECT LOCALTIME ( ) AS SYSTEM_DATETIME;

결과:

SYSTEM_DATETIME

211:09:14

SYSUTCDATETIME

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
SYSUTCDATETIME ( )  
Snowflake SQL

Snowflake SQL 설명서

SYSDATE()

SQL 서버

SELECT SYSUTCDATETIME() as SYS_UTC_DATETIME;

결과:

SYSTEM_UTC_DATETIME

2023-02-02 20:59:28.0926502

Snowflake SQL
SELECT
SYSDATE() as SYS_UTC_DATETIME;

결과:

SYSTEM_UTC_DATETIME

2023-02-02 21:02:05.557

YEAR

Applies to
  • SQL 서버

  • Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQL 서버
YEAR( date )  
Snowflake SQL

Snowflake SQL 설명서

YEAR ( <date_or_timestamp_expr> )

SQL 서버

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

결과:

YEAR

2022

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

결과:

YEAR

2022