SnowConvert: Transact 기본 제공 함수

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

집계

TransactSQLSnowflakeNotes
TransactSQLSnowflakeNotes
APPROX_COUNT_DISTINCTAPPROX_COUNT_DISTINCT
AVG​AVG
CHECKSUM_AGG*to be defined
COUNTCOUNT
COUNT_BIG*to be defined
GROUPINGGROUPING
GROUPING_IDGROUPING_ID
MAXMAX
MINMIN
STDEVSTDDEV, STDEV_SAMP
STDEVPSTDDEV_POP
SUMSUM
VARVAR_SAMP
VARPVAR_POP​

분석

TransactSQL

Snowflake

참고

CUME_DIST

CUME_DIST

FIRST_VALUE

FIRST_VALUE

LAG

LAG

LAST_VALUE

LAST_VALUE

LEAD

LEAD

PERCENTILE_CONT

PERCENTILE_CONT

PERCENTILE_DISC

PERCENTILE_DISC

PERCENT_RANK

PERCENT_RANK

데이터 정렬

TransactSQL

Snowflake

참고

COLLATIONPROPERTY

*정의 예정

TERTIARY_WEIGHTS

*정의 예정

구성

TransactSQL

Snowflake

참고

​@@DBTS

*정의 예정

@@LANGID

*정의 예정

@@LANGUAGE

*정의 예정

@@LOCK_TIMEOUT

*정의 예정

@@MAX_CONNECTIONS

*정의 예정

@@MAX_PRECISION

*정의 예정

@@NESTLEVEL

*정의 예정

@@OPTIONS

*정의 예정

@@REMSERVER

*정의 예정

@@SERVERNAME

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

@@SERVICENAME

*정의 예정

@@SPID

*정의 예정

@@TEXTSIZE

*정의 예정

@@VERSION

*정의 예정

CURRENT_VERSION 을 사용하여 모방 가능

변환

TransactSQL

Snowflake

참고

CAST

CAST

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

CONVERT

CONVERT 확인

CAST 와 같은 동작

PARSE

*정의 예정

TRY_CAST

TRY_CAST

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

TRY_CONVERT

*정의 예정

TRY_CAST 와 동일한 동작

TRY_PARSE

TRY_CAST

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

암호화

TransactSQL

Snowflake

참고

ASYMKEY_ID

*정의 예정

ASYMKEYPROPERTY

*정의 예정

CERTENCODED

*정의 예정

CERTPRIVATEKEY

*정의 예정

DECRYPTBYASYMKEY

*정의 예정

DECRYPTBYCERT

*정의 예정

DECRYPTBYKEY

*정의 예정

DECRYPTBYKEYAUTOASYMKEY

*정의 예정

DECRYPTBYKEYAUTOCERT

*정의 예정

DECRYPTBYPASSPHRASE

_*to be defined_​

DENCRYPT_RAW 를 사용하여 모방 가능

ENCRYPTBYASYMKEY

*정의 예정

ENCRYPTBYCERT

*정의 예정

ENCRYPTBYKEY

*정의 예정

ENCRYPTBYPASSPHRASE

*정의 예정

ENCRYPT_RAW 를 사용하여 모방 가능

HASHBYTES

MD5, SHA1, SHA2

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

IS_OBJECTSIGNED

*정의 예정

KEY_GUID

*정의 예정

KEY_ID

*정의 예정

KEY_NAME

*정의 예정

SIGNBYASYMKEY

*정의 예정

SIGNBYCERT

*정의 예정

SYMKEYPROPERTY

*정의 예정

VERIGYSIGNEDBYCERT

*정의 예정

커서

TransactSQL

Snowflake

참고

@@CURSOR_ROWS

*정의 예정

@@FETCH_STATUS

*정의 예정

CURSOR_STATUS

*정의 예정

데이터 타입

TransactSQL

Snowflake

참고

DATALENGTH

OCTET_LENGTH

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

IDENT_SEED

*정의 예정

IDENT_CURRENT

*정의 예정

IDENTITY

*정의 예정

IDENT_INCR

*정의 예정

SQL_VARIANT_PROPERTY

*정의 예정

날짜 & 시간

TransactSQL

Snowflake

참고

@@DATEFIRST

*정의 예정

@@LANGUAGE

*정의 예정

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

CURRENT_TIMEZONE

*정의 예정

DATEADD

DATEADD

DATEDIFF

DATEDIFF

DATEDIFF_BIG

*정의 예정

DATEFROMPARTS

DATE_FROM_PARTS

DATENAME

*정의 예정

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

DATEPART

DATE_PART

DATETIME2FROMPARTS

*정의 예정

DATETIMEFROMPARTS

*정의 예정

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

DATETIMEOFFSETFROMPARTS

*정의 예정

DAY

DAY

EOMONTH

*정의 예정

LAST_DAY 를 사용하여 모방 가능

FORMAT

*정의 예정

TO_CHAR 로 매핑됩니다

GETDATE

GETDATE

GETUTCDATE

*정의 예정

CONVERT_TIMEZONE 을 사용하여 모방 가능

ISDATE

*정의 예정

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

MONTH

MONTH

SMALLDATETIMEFROMPARTS

*정의 예정

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

SWITCHOFFSET

*정의 예정

CONVERT_TIMEZONE 을 사용하여 모방 가능

SYSDATETIME

LOCALTIME

SYSDATETIMEOFFSET

*정의 예정

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

SYSUTCDATETIME

*정의 예정

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

TIMEFROMPARTS

TIME_FROM_PARTS

TODATETIMEOFFSET

*정의 예정

CONVERT_TIMEZONE 을 사용하여 모방 가능

YEAR

YEAR

JSON

TransactSQL

Snowflake

참고

ISJSON

CHECK_JSON

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

JSON_VALUE

*정의 예정

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

JSON_QUERY

*정의 예정

JSON_MODIFY

*정의 예정

수학

TransactSQL

Snowflake

참고

ABS

ABS

ACOS

ACOS

ASIN

ASIN

ATAN

ATAN

ATN2

ATAN2

CEILING

CEIL

COS

COS

COT

COT

DEGREES

DEGREES

EXP

EXP

FLOOR

FLOOR

LOG

LN

LOG10

LOG

PI

PI

POWER

POWER

RADIANS

RADIANS

RAND

RANDOM

ROUND

ROUND

SIGN

SIGN

SIN

SIN

SQRT

SQRT

SQUARE

SQUARE

논리

TransactSQL

Snowflake

참고

CHOOSE

*정의 예정

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

GREATEST

GREATEST

IIF

IIF

LEAST

LEAST

NULLIF

NULLIF

메타데이터

TransactSQLSnowflakeNotes
TransactSQLSnowflakeNotes
@@PROCID*to be defined
APP_NAME*to be defined
APPLOCK_MODE*to be defined
APPLOCK_TEST*to be defined
ASSEMBLYPROPERTY*to be defined
COL_LENGTH*to be defined
COL_NAME*to be defined
COLUMNPROPERTY*to be defined
DATABASE_PRINCIPAL_ID*to be definedMaps to CURRENT_USER when no args
DATABASEPROPERTYEX*to be defined
DB_ID*to be definedWe recommend changing to CURRENT_DATABASE(). If there is a need to emulate this functionality.
SELECT DATE_PART(EPOCH,CREATED) FROM INFORMATION_SCHEMA.DATABASES WHERE DATABASE_NAME = 'DB' ;
Can achieve something similar
DB_NAME*to be definedMostly used in the procedurename mentioned above
FILE_ID*to be defined
FILE_IDEX*to be defined
FILE_NAME*to be defined
FILEGROUP_ID*to be defined
FILEGROUP_NAME*to be defined
FILEGROUPPROPERTY*to be defined
FILEPROPERTY*to be defined
FULLTEXTCATALOGPROPERTY*to be defined
FULLTEXTSERVICEPROPERTY*to be defined
INDEX_COL*to be defined
INDEXKEY_PROPERTY*to be defined
INDEXPROPERTY*to be defined
NEXT VALUE FOR*to be defined
OBJECT_DEFINITION*to be defined
OBJECT_ID*to be definedIn most cases can be replaced. Most cases are like: IF OBJECT_ID('dbo.TABLE') IS NOT NULL DROP TABLE dbo.Table which can be replaced by a DROP TABLE IF EXISTS (this syntax is also supported in SQL SERVER). If the object_id needs to be replicated, a UDF is added depending on the second parameter of the function call.
OBJECT_NAME*to be definedCan be replaced by: 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'

This transformation only occurs when it is inside a DeclareStatement.

ObjectName is the name of the TopLevelObject that contains the Function.

OBJECT_SCHEMA_NAME*to be defined
OBJECT_SCHEMA_NAME(@@PROCID):OBJECT_SCHEMA_NAMEThis transformation only occurs when it is inside a DeclareStatement.
OBJECTPROPERTY*to be defined
OBJECTPROPERTYEX*to be defined
ORIGINAL_DB_NAME*to be defined
PARSENAMEPARSENAME_UDFIt creates a UDF to emulate the same behavior of Parsename function.
*to be defined
SCHEMA_NAME*to be defined
SCOPE_IDENTITY*to be definedIt this is needed I would recommend to use sequences, and capture the value before insert
SERVERPROPERTY*to be defined
STATS_DATE*to be defined
TYPE_ID*to be defined
TYPE_NAME*to be defined
TYPEPROPERTY*to be defined
VERSION*to be defined

순위 지정

TransactSQL

Snowflake

참고

DENSE_RANK

DENSE_RANK

NTILE

NTILE

RANK

RANK

ROW_NUMBER

ROW_NUMBER

복제

TransactSQL

Snowflake

참고

PUBLISHINGSERVERNAME

*정의 예정

Rowset

TransactSQL

Snowflake

참고

OPENDATASOURCE

*정의 예정

OPENJSON

*정의 예정

QPENQUERY

*정의 예정

OPENROWSET

*정의 예정

OPENXML

OPENXML_UDF

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

보안

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>IS_ROLE_IN_SESSION</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 로 매핑됩니다

문자열

TransactSQL

Snowflake

참고

ASCII

ASCII

CHAR

CHR, CHAR

CHARINDEX

CHARINDEX

CONCAT

CONCAT

CONCAT_WS

CONCAT_WS

COALESCE

COALESCE

DIFFERENCE

*정의 예정

FORMAT

*정의 예정

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 버전에는 압축 방법을 나타내는 메서드 인자가 있습니다. 유효한 값: SNAPPY, ZLIB, ZSTD, BZ2</p><p>압축 수준은 괄호 안에 지정되며 음수가 아닌 정수여야 합니다</p>

CONNECTIONPROPERTY

*정의 예정

CONTEXT_INFO

*정의 예정

CURRENT_REQUEST_ID

*정의 예정

CURRENT_TRANSACTION_ID

*정의 예정

DECOMPRESS

*정의 예정

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

ERROR_LINE

*정의 예정

ERROR_LINE 헬퍼에 매핑됩니다. EXEC 헬퍼는 스택 추적에서 예외 라인 속성을 캡처합니다.

ERROR_MESSAGE

SQLERRM

ERROR_NUMBER

*정의 예정

ERROR_NUMBER 헬퍼에 매핑됩니다. EXEC 헬퍼는 예외 코드 속성을 캡처합니다.

ERROR_PROCEDURE

*정의 예정

ERROR_PROCEDURE 헬퍼에 매핑되며, arguments.callee.name 프로시저 속성에서 가져옵니다

ERROR_SEVERITY

*정의 예정

ERROR_STATE

*정의 예정

헬퍼는 예외 상태 속성을 캡처합니다

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의 유사한 함수: LOGIN_HISTORY.</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

*정의 예정

시스템 함수

ISNULL

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

ISNULL ( check_expression , replacement_value )  

Copy

Snowflake SQL 설명서

NVL( <expr1> , <expr2> )

Copy

코드:

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

결과:

+-----------+
|COMPANYNAME|
+-----------+
|SNOWFLAKE  |
+-----------+

Copy

코드:

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

결과:

+-----------+
|COMPANYNAME|
+-----------+
|SNOWFLAKE  |
+-----------+

Copy

알려진 문제

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

NEWID

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

NEWID ( )  

Copy

Snowflake SQL 설명서

UUID_STRING()

Copy

경고

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

코드:

 SELECT NEWID ( ) AS ID;
Copy

결과:

+------------------------------------+
|ID                                  |
+------------------------------------+
|47549DDF-837D-41D2-A59C-A6BC63DF7910|
+------------------------------------+

Copy

코드:

 SELECT
UUID_STRING( ) AS ID;
Copy

결과:

+------------------------------------+
|ID                                  |
+------------------------------------+
|6fd4312a-7925-4ad9-85d8-e039efd82089|
+------------------------------------+

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

NULLIF

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

NULLIF ( check_expression , replacement_value )  

Copy

Snowflake SQL 설명서

NULLIF( <expr1> , <expr2> )

Copy

코드:

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

결과:

+-------+-------+
|RESULT1|RESULT2|
+-------+-------+
|6      |null   |
+-------+-------+

Copy

코드:

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

결과:

+-------+-------+
|RESULT1|RESULT2|
+-------+-------+
|6      |null   |
+-------+-------+

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

@@ROWCOUNT

Applies to
  • [x] SQL 서버

설명

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

샘플 소스 패턴

구문

@@ROWCOUNT

Copy

Snowflake SQL 설명서

SQLROWCOUNT

Copy

코드:

 CREATE TABLE table1
(
    column1 INT
);

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

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

    select @addCount
END
;
GO

EXEC procedure1;
Copy

결과:

+-+
| |
+-+
|3|
+-+

Copy

코드:

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

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

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

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

CALL procedure1();
Copy

결과:

+----------+
|:ADDCOUNT |
+----------+
|    3     |
+----------+

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

FORMATMESSAGE

Applies to
  • [x] SQL 서버

설명

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

샘플 소스 패턴

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

구문

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

Copy

코드:

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

결과:

                                                     RESULT|
-----------------------------------------------------------+
This is the first variable and this is the second variable.|

Copy

코드:

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

결과:

RESULT                                                     |
-----------------------------------------------------------+
This is the first variable and this is the second variable.|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

  1. SSC-FDM-TS0008: FORMATMESSAGE 함수가 UDF 로 변환되었습니다.

FORMATMESSAGE_UDF

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

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

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

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

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

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

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

문자열 함수

CHAR

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

CHAR( expression )

Copy

Snowflake SQL 전체 설명서

{CHR | CHAR} ( <input> )

Copy

JavaScript 전체 설명서

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

Copy

입력:

 SELECT CHAR(170) AS SMALLEST_A
Copy

출력:

SMALLEST_A|      
-----------+
          ª| 

Copy

코드:

 SELECT
CHAR(170) AS SMALLEST_A;
Copy

결과:

SMALLEST_A|      
-----------+
          ª| 

Copy

코드:

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

SELECT GET_CHAR(170) SMALLEST_A;
Copy

결과:

SMALLEST_A|      
-----------+
          ª| 

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

CHARINDEX

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

CHARINDEX( expression_to_find, expression_to_search [, start] )

Copy

Snowflake SQL 전체 설명서

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

Copy

JavaScript 전체 설명서

String.indexOf( search_value [, index] )

Copy

코드:

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

결과:

      INDEX|      
-----------+
         33|

Copy

코드:

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

결과:

      INDEX|      
-----------+
         33|

Copy

참고

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

코드:

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

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

결과:

      INDEX|      
-----------+
         33|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

COALESCE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

COALESCE ( expression [ ,...n ] )   

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

StartDate |FIRST_NOT_NULL|
----------+--------------+
2009-01-14|    2000-01-01|
2008-01-31|    2000-01-01|
2007-11-11|    2000-01-01|
2007-12-05|    2010-05-30|
2010-05-31|    2000-01-01|
2008-01-06|    2000-01-01|
2008-01-24|    2000-01-01|
2009-02-08|    2000-01-01|
2008-12-29|    2000-01-01|
2009-01-16|    2000-01-01|

Copy

코드:

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

결과:

StartDate |FIRST_NOT_NULL|
----------+--------------+
2009-01-14|    2000-01-01|
2008-01-31|    2000-01-01|
2007-11-11|    2000-01-01|
2007-12-05|    2010-05-30|
2010-05-31|    2000-01-01|
2008-01-06|    2000-01-01|
2008-01-24|    2000-01-01|
2009-02-08|    2000-01-01|
2008-12-29|    2000-01-01|
2009-01-16|    2000-01-01|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

CONCAT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

Copy

Snowflake SQL 전체 설명서

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

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

Copy

JavaScript 전체 설명서

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

코드:

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

출력:

       TITLE|      
------------+
Ray of Light|   

Copy

코드:

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

출력:

       TITLE|      
------------+
Ray of Light|   

Copy

코드:

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

\ 출력:

       TITLE|      
------------+
Ray of Light|    

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

LEFT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

LEFT ( character_expression , integer_expression )  

Copy

Snowflake SQL 전체 설명서

LEFT ( <expr> , <length_expr> )

Copy

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

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

코드:

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

출력:

FIRST_NAME|
----------+
John      |

Copy

코드:

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

출력:

FIRST_NAME|
----------+
John      |

Copy

코드:

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

\ 출력:

FIRST_NAME|
----------+
John      |

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

LEN

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

LEN( string_expression )

Copy

Snowflake SQL 전체 설명서

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

Copy

JavaScript SQL 전체 설명서

 string.length
Copy

코드:

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

출력:

LEN|
---+
 11|

Copy

코드:

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

출력:

LEN|
---+
 11|

Copy

코드:

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

\ 출력:

LEN|
---+
 11|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

LOWER

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 LOWER ( character_expression )  
Copy

Snowflake SQL 전체 설명서

 LOWER( <expr> )
Copy

JavaScript SQL 전체 설명서

 String.toLowerCase( )
Copy

코드:

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

출력:

LOWERCASE                            |
-------------------------------------+
you are a prediction of the good ones|

Copy

코드:

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

출력:

LOWERCASE                            |
-------------------------------------+
you are a prediction of the good ones|

Copy

코드:

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

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

\ 출력:

LOWERCASE                            |
-------------------------------------+
you are a prediction of the good ones|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

NCHAR

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

NCHAR( expression )

Copy
인자

: 정수 식입니다.

Return Type

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

 SELECT NCHAR(170);
Copy
            |      
------------+
           ª|   

Copy

참고

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

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

REPLACE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

REPLACE ( string_expression , string_pattern , string_replacement )  

Copy

Snowflake SQL 전체 설명서

REPLACE( <subject> , <pattern> [ , <replacement> ] )

Copy
 String.replace( pattern, new_expression)
Copy

코드:

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

출력:

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

Copy

코드:

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

출력:

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

Copy

코드:

 CREATE OR REPLACE FUNCTION REPLACER (str varchar, pattern varchar, new_expression varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
   return STR.replace( PATTERN, NEW_EXPRESSION );
$$;

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

\ 출력:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

REPLICATE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

REPLICATE( string_expression, number_expression )

Copy

Snowflake SQL 설명서

REPEAT(<input>, <n>)

Copy

JavaScript 설명서

String.repeat( number_expression )

Copy

코드:

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

결과:

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

Copy

코드:

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

결과:

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

Copy

코드:

 CREATE OR REPLACE FUNCTION REPEAT_STR (str varchar, occurrences float)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
 
   return STR.repeat( OCCURRENCES );
$$;

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

결과:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

RTRIM

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

RTRIM( string_expression )

Copy

Snowflake SQL 전체 설명서

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

Copy

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

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

입력:

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

출력:

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

Copy

코드:

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

결과:

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

Copy

코드:

 CREATE OR REPLACE FUNCTION rtrim(str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
  function RTRIM(string){
    return string.replace(/s+$/,"");
    }
   return RTRIM( STR );
$$;

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

결과:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SPACE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SPACE ( integer_expression )  

Copy

Snowflake SQL 전체 설명서

SPACE(<n>)

Copy

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

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

입력:

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

출력:

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

Copy

입력:

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

출력:

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

Copy

입력:

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

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

출력:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SUBSTRING

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SUBSTRING( string_expression, start, length )

Copy

Snowflake SQL 전체 설명서

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

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

Copy

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

 string.substring( indexA [, indexB])
Copy

입력:

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

출력:

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

Copy

코드:

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

결과:

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

Copy

코드:

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

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

결과:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

UPPER

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

UPPER( string_expression ) 

Copy

Snowflake SQL 전체 설명서

UPPER( <expr> )

Copy

JavaScript SQL 전체 설명서

 String.toUpperCase( )
Copy

코드:

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

출력:

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

Copy

코드:

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

출력:

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

Copy

코드:

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

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

\ 출력:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

ASCII

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 ASCII( expression )
Copy
인자

: VARCVHAR 또는 CHAR 식.

Return Type

INT.

 SELECT ASCII('A') AS A , ASCII('a') AS a;
Copy
          A|          a|
-----------+ ----------+
         65|         97|    

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 ASCII

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 string.charCodeAt( [index] )
Copy
인자

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

Return Type

Int.

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

QUOTENAME

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

QUOTENAME( string_expression [, quote_character])

Copy
인자

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

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 QUOTENAME

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

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

Return Type

문자열.

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

CONCAT_WS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Copy
인자

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

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 조인

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Array.join( separator )
Copy
인자

구분 기호: 조인할 문자.

Return Type

문자열.

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SOUNDEX

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SOUNDEX( string_expression )

Copy
인자

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

Return Type

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

 SELECT SOUNDEX('two') AS TWO , SOUNDEX('too') AS TOO;
Copy
      TWO|      TOO|
---------+---------+
     T000|     T000| 

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 SOUNDEX

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

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

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

Return Type

문자열.

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

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

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

REVERSE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

REVERSE( string_expression )

Copy
인자

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

Return Type

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

 SELECT REVERSE('rotator') AS PALINDROME;
Copy
      PALINDROME|      
----------------+
         rotator|  

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 에서 반전

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

Return Type

문자열.

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

SELECT REVERSE('rotator') PALINDROME;
Copy
      PALINDROME|      
----------------+
         rotator|  

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

STRING_ESCAPE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

STRING_ESCAPE( text, type )

Copy
인자

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

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

Return Type

VARCHAR.

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 문자열화

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 JSON.stringify( value )
Copy
인자

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

Return Type

문자열.

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

TRIM

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

TRIM( string_expression )

Copy
인자

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

Return Type

VARCHAR 또는 NVARCHAR

코드:

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

출력:

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

Copy

코드:

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

출력:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 트림

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 String.trim( )
Copy
인자

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

Return Type

문자열.

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

DIFFERENCE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DIFFERENCE( expression1, expression1 )

Copy
인자

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

Return Type

Int.

 SELECT DIFFERENCE('Like', 'Mike');
Copy
    Output |
-----------|
         3 |

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 DIFFERENCE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

참고

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

샘플 소스 패턴

구현 예시

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

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

Return Type

문자열.

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

FORMAT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

FORMAT( value, format [, culture])

Copy
인자

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

format: 원하는 형식입니다.

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

Return Type

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

카테고리

.NET 타입

숫자

bigint

Int64

숫자

int

Int32

숫자

smallint

Int16

숫자

tinyint

바이트

숫자

소수점

SqlDecimal

숫자

숫자

SqlDecimal

숫자

float

Double

숫자

real

Single

숫자

smallmoney

Decimal

숫자

money

Decimal

날짜 및 시간

날짜

DateTime

날짜 및 시간

시간

TimeSpan

날짜 및 시간

날짜/시간

DateTime

날짜 및 시간

smalldatetime

DateTime

날짜 및 시간

datetime2

DateTime

날짜 및 시간

datetimeoffset

DateTimeOffset

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

Copy
 SELECT FORMAT(244900.25, 'C', 'cr-CR')  AS 'CURRENCY';
Copy
       CURRENCY|      
---------------+
    ₡244,900.25|  

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 FORMAT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

DateTime 값

구문

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

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

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

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

Return Type

문자열.

숫자값

구문

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

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

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

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

Return Type

문자열.

DateTime

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

Copy

숫자

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

PATINDEX

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

PATINDEX( pattern, expression )

Copy
인자

pattern: 패턴을 찾습니다.

expression: 검색할 식입니다.

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 검색

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 String.search( regex )
Copy
인자

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

Return Type

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

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

STR

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 STR ( float_expression [ , length [ , decimal ] ] ) 
Copy
 STR_UDF( numeric_expression, number_format )
Copy
인자

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

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

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

Return Type

VARCHAR.

입력:

 /* 1 */
SELECT STR(123.5);

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

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

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

출력:

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

Copy

입력:

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

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

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

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

출력:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 STR

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

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

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

Return Type

문자열.

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

LTRIM

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

LTRIM( string_expression )

Copy
인자

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

Return Type

VARCHAR 또는 NVARCHAR

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 LTRIM

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

Return Type

문자열.

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

순위 지정 함수

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

DENSE_RANK

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

 DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > )  
Copy

Snowflake SQL 설명서

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

코드:

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

결과:

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

Copy

코드:

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

결과:

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

Copy

관련 EWIs

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

RANK

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )  
Copy

Snowflake SQL 설명서

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

코드:

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

결과:

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

Copy

코드:

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

결과:

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

Copy

관련 EWIs

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

ROW_NUMBER

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

 ROW_NUMBER ( )   
    OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )  
Copy

Snowflake SQL 전체 설명서

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

코드:

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

출력:

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

Copy

코드:

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

출력:

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

Copy

관련 EWIs

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

논리 함수

IIF

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

IIF( boolean_expression, true_value, false_value )

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

RESULT|
------+
 FALSE|

Copy

코드:

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

결과:

RESULT|
------+
 FALSE|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

XML 함수

쿼리

Applies to
  • [x] SQL 서버

경고

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

설명

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

샘플 소스 패턴

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

SQL 서버

 CREATE TABLE xml_demo(object_col XML);

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

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

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

Copy
Snowflake SQL
 CREATE OR REPLACE TABLE xml_demo (
    object_col VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XML DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
;

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

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

Copy

Known Issues

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

관련 EWIs

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

Applies to
  • [x] SQL 서버

경고

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

설명

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

샘플 소스 패턴

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

SQL 서버

 CREATE TABLE xml_demo(object_col XML);

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

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

SELECT
    xml_demo.object_col.value('(/Root/ProductDescription/@ProductID)[1]', 'int' ) as ID,
    xml_demo.object_col.value('(/Root/ProductDescription/@ProductName)[1]', 'varchar(max)' ) as ProductName,
    xml_demo.object_col.value('(/Root/ProductDescription/Features/Warranty)[1]', 'varchar(max)' ) as Warranty
from xml_demo;
Copy
 ID | ProductName | Warranty               |
----+-------------+------------------------+
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |

Copy
Snowflake SQL
 CREATE OR REPLACE TABLE xml_demo (
    object_col VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XML DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
;

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

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

Copy

Known Issues

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

관련 EWIs

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

집계 함수

COUNT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

TOTAL|
-----+
  290|

Copy

코드:

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

결과:

TOTAL|
-----+
  290|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

COUNT_BIG

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

TOTAL|
-----+
  290|

Copy

코드:

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

결과:

TOTAL|
-----+
  290|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SUM

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

SUM ( [ ALL | DISTINCT ] expression )  

Copy

Snowflake SQL 설명서

SUM( [ DISTINCT ] <expr1> )

Copy

코드:

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

결과:

TOTALVACATIONHOURS|
------------------+
             14678|

Copy

코드:

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

결과:

TOTALVACATIONHOURS|
------------------+
             14678|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SnowConvert 사용자 지정 UDFs

설명

일부 트랜잭션(SQL) 함수나 동작은 Snowflake에서 사용할 수 없거나 다르게 동작할 수 있습니다. 이러한 차이를 최소화하기 위해 일부 함수는 SnowConvert 사용자 정의 UDFs 로 대체됩니다.

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

OPENXML UDF

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

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

사용자 정의 UDF 오버로드

매개 변수

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

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

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


CREATE OR REPLACE FUNCTION XML_JSON_SIMPLE(XML VARIANT)
RETURNS OBJECT
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
function toNormalJSON(xmlJSON) {
    var finalres = {};
    var name=xmlJSON['@'];
    var res = {};
    finalres[name] = res;
    for(var key in xmlJSON)
    {
        if (key == "@")
        {
            res["$name"] = xmlJSON["@"];
        }
        else if (key == "$") {
            continue;
        }
        else if (key.startsWith("@"))
        {
            // This is an attribute
            res[key]=xmlJSON[key];
        }
        else
        {
            var elements = xmlJSON['$']
            var value = xmlJSON[key];
            res[key] = [];
            if (Array.isArray(value))
            {
                for(var elementKey in value)
                {
                    var currentElement = elements[elementKey];
                    var fixedElement = toNormalJSON(currentElement);
                    res[key].push(fixedElement);
                }
            }
            else if (value === 0)
            {
                var fixedElement = toNormalJSON(elements);
                res[key].push(fixedElement);
            }
        }
    }
    return finalres;
}
return toNormalJSON(XML);
$$;
Copy

Transact-SQL

 DECLARE @idoc INT, @doc VARCHAR(1000);  
SET @doc ='  
<ROOT>  
<Customer CustomerID="VINET" ContactName="Paul Henriot">  
   <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">  
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>  
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>  
   </Order>  
</Customer>  
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">  
   <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">  
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>  
   </Order>  
</Customer>  
</ROOT>';  

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

Copy
Snowflake

참고

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

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

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

SELECT
Left(value:Customer['@CustomerID'], '10') AS 'CustomerID',
Left(value:Customer['@ContactName'], '20') AS 'ContactName'
FROM
OPENXML_UDF(:IDOC, ':ROOT:Customer'));
RETURN TABLE(BlockResultSet);
END;
Copy
CustomerID  | ContactName
----------------------------+
VINET	    | Paul Henriot
LILAS	    | Carlos Gonzlez

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

Copy

알려진 문제

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

관련 EWIs

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

STR UDF

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

사용자 정의 UDF 오버로드

매개 변수

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

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

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

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

A

B

C

D

124

**

123

123.5

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

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SWITCHOFFSET_UDF

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

사용자 정의 UDF 오버로드

매개 변수

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

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

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

-- ==========================================================================
-- Description: The function OFFSET_FORMATTER(offset_hrs varchar) serves as
-- an auxiliar function to format the offter hours and its prefix operator.
-- ==========================================================================  
CREATE OR REPLACE FUNCTION PUBLIC.OFFSET_FORMATTER(offset_hrs varchar)
RETURNS varchar
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
CASE
   WHEN LEN(offset_hrs) = 0 THEN '+' || '0' || '0'
   WHEN LEN(offset_hrs) = 1 THEN '+' || '0' || offset_hrs
   WHEN LEN(offset_hrs) = 2 THEN
        CASE 
            WHEN LEFT(offset_hrs, 1) = '-' THEN '-' || '0' || RIGHT(offset_hrs, 1)
            ELSE '+' || offset_hrs
        END
    ELSE offset_hrs
END
$$;
Copy

Transact-SQL

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

메타데이터 함수

DB_NAME

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 DB_NAME ( [ database_id ] )  
Copy

Snowflake SQL 설명서

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

코드:

 SELECT DB_NAME();
Copy

결과:

RESULT             |
-------------------+
ADVENTUREWORKS2019 |

Copy

코드:

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

결과:

RESULT             |
-------------------+
ADVENTUREWORKS2019 |

Copy

알려진 문제

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

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

관련 EWIs

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

OBJECT_ID

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

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

샘플 소스 패턴

1. Default transformation

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

2. Unknown database

코드:

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

코드:

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

3. Different object names

코드:

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

코드:

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

알려진 문제

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

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

관련 EWIs

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

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

분석 함수

LAG

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

LAG (scalar_expression [,offset] [,default])  
    OVER ( [ partition_by_clause ] order_by_clause )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

PREVIOUS|ACTUAL|
--------+------+
    NULL|    10|
      10|    89|
      89|    10|
      10|    48|
      48|     0|
       0|    95|
      95|    55|
      55|    67|
      67|    84|
      84|    85|

Copy

코드:

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

결과:

PREVIOUS|ACTUAL|
--------+------+
    NULL|    10|
      10|    89|
      89|    10|
      10|    48|
      48|     0|
       0|    95|
      95|    55|
      55|    67|
      67|    84|
      84|    85|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

데이터 타입 함수

DATALENGTH

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DATALENGTH ( expression )   

Copy

Snowflake SQL 설명서

OCTET_LENGTH(<string_or_binary>)

Copy

코드:

 SELECT DATALENGTH('SomeString') AS SIZE;
Copy

결과:

SIZE|
----+
  10|

Copy

코드:

 SELECT OCTET_LENGTH('SomeString') AS SIZE;
Copy

결과:

SIZE|
----+
  10|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

수학 함수

ABS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

ABS( expression )

Copy

Snowflake SQL 설명서

ABS( <num_expr> )

Copy

JavaScript 전체 설명서

Math.abs( expression )

Copy

코드:

 SELECT ABS(-5);
Copy

결과:

ABS(-5)|
-------+
      5|

Copy

코드:

 SELECT ABS(-5);
Copy

결과:

ABS(-5)|
-------+
      5|

Copy

코드:

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


Result:

COMPUTE_ABS(-5)|
---------------+
              5|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

AVG

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

참고

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

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

샘플 소스 패턴

구문

AVG ( [ ALL | DISTINCT ] expression )  
   [ OVER ( [ partition_by_clause ] order_by_clause ) ]

Copy

Snowflake SQL 설명서

AVG( [ DISTINCT ] <expr1> )

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

Copy

코드:

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

결과:

AVG_VACATIONS|
-------------+
           50|

Copy

코드:

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

결과:

AVG_VACATIONS|
-------------+
    50.613793|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

CEILING

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

CEILING( expression )

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

Copy
 Math.ceil( expression )
Copy

코드:

SELECT CEILING(642.20);
Copy


Result:

CEILING(642.20)|
---------------+
643            |

Copy

코드:

 SELECT CEIL(642.20);
Copy


Result:

CEIL(642.20)|
------------+
643         |

Copy

코드:

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


Result:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

FLOOR

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

FLOOR ( numeric_expression )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

 SELECT FLOOR (124.87) AS FLOOR;
Copy

결과:

FLOOR|
-----+
  124|

Copy

코드:

 SELECT FLOOR (124.87) AS FLOOR;
Copy

결과:

FLOOR|
-----+
  124|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

POWER

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

POWER ( float_expression , y )  

Copy

Snowflake SQL 설명서

POW(x, y)

POWER (x, y)

Copy

코드:

 SELECT POWER(2, 10.0) AS IntegerResult
Copy

결과:

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

Copy

코드:

 SELECT POWER(2, 10.0) AS IntegerResult;
Copy

결과:

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

Copy

관련 설명서

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

ROUND

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

ROUND ( numeric_expression , length [ ,function ] )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

COL1    |COL2    |
--------+--------+
123.9990|124.0000|

Copy

코드:

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

결과:

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

Copy

관련 설명서

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SQRT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQRT ( float_expression )  

Copy

Snowflake SQL 설명서

SQRT(expr)

Copy

코드:

 SELECT SQRT(25) AS RESULT;
Copy

결과:

RESULT|
------+
   5.0|

Copy

코드:

 SELECT SQRT(25) AS RESULT;
Copy

결과:

RESULT|
------+
   5.0|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SQUARE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SQUARE ( float_expression )  

Copy

Snowflake SQL 설명서

SQUARE(expr)

Copy

코드:

 SELECT SQUARE (5) AS SQUARE;
Copy

결과:

SQUARE|
------+
  25.0|

Copy

코드:

 SELECT SQUARE (5) AS SQUARE;
Copy

결과:

SQUARE|
------+
    25|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

STDEV

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

 STDEV ( [ ALL | DISTINCT ] expression )  
Copy

Snowflake SQL 설명서

 STDDEV( [ DISTINCT ] <expression_1> )
Copy

코드:

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

결과:

           STDEV|
----------------+
28.7862150320948|

Copy

코드:

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

결과:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

STDEVP

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

STDEVP ( [ ALL | DISTINCT ] expression )  

Copy

Snowflake SQL 설명서

STDDEV_POP( [ DISTINCT ] expression_1)

Copy

코드:

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

결과:

STDEVP_VACATIONHOURS|
--------------------+
  28.736540767245085|

Copy

코드:

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

결과:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

VAR

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

참고

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

설명

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

샘플 소스 패턴

구문

VAR ( [ ALL | DISTINCT ] expression )  

Copy
VAR_SAMP( [DISTINCT] <expr1> )

Copy

코드:

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

결과:

             VAR|
----------------+
28.7862150320948|

Copy

코드:

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

결과:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

POWER

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 POWER( base, exp )
Copy
인자

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

Return Type

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

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 POW

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.pow( base, exp )
Copy
인자

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

ACOS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

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

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

샘플 소스 패턴

구문

 ACOS ( expression )
Copy
인자

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

Return Type

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

 SELECT ACOS(-1.0);
Copy
ACOS(-1.0)       |
-----------------+
3.141592653589793|


Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 ACOS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.acos( expression )
Copy
인자

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

ASIN

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

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

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

샘플 소스 패턴

구문

 ASIN( expression )
Copy
인자

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

Return Type

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

 SELECT ASIN(0.5);
Copy
ASIN(0.5)         |
------------------+
0.5235987755982989|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 ASIN

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.asin( expression )
Copy
인자

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

COS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

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

샘플 소스 패턴

구문

 COS( expression )
Copy
인자

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 COS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.cos( expression )
Copy
인자

식: 숫자 표현식.

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

COT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

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

샘플 소스 패턴

구문

 COT( expression )
Copy
인자

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 COT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

RADIANS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 RADIANS( expression )
Copy
인자

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

Return Type

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

 SELECT RADIANS(180.0)
Copy
RADIANS(180)        |
--------------------+
3.141592653589793116|

Copy

참고

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

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 RADIANS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

PI

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 PI( )
Copy
인자

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

Return Type

부동소수점.

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

EXEC CIRCUMFERENCE @radius = 2;
Copy
CIRCUMFERENCE @radius = 2 |
--------------------------+
          12.5663706143592|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 PI

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.PI
Copy

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

DEGREES

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 DEGREES( expression )
Copy
인자

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 DEGREES

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구현 예시

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

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

LOG

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 LOG( expression [, base ] )
Copy
인자

: 숫자 식입니다.

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

Return Type

부동소수점.

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 LOG

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

경고

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

샘플 소스 패턴

구문

 Math.log( expression )
Copy
인자

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

ATAN

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

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

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

샘플 소스 패턴

구문

 ATAN( expression )
Copy
인자

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

Return Type

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

 SELECT ATAN(-30);
Copy
ATAN(-30)          |
-------------------+
-1.5374753309166493|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 ATAN

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.atan( expression )
Copy
인자

: 숫자 식입니다.

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

ATN2

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

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

샘플 소스 패턴

구문

 ATN2( expression_1, expression_2 )
Copy
인자

expression1expression2: 숫자 식입니다.

Return Type

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

 SELECT ATN2(7.5, 2);
Copy
ATN2(7.5, 2)      |
------------------+
1.3101939350475555|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 ATAN2

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.atan2( expression_1, expression_2 )
Copy
인자

expression_1expression_2: 숫자 표현식.

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

LOG10

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 LOG10( expression )
Copy
인자

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

Return Type

부동소수점.

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 LOG10

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.log10( expression )
Copy
인자

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

Return Type

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

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

EXP

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 EXP( expression )
Copy
인자

: 숫자 식입니다.

Return Type

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

 SELECT EXP(LOG(20)), LOG(EXP(20))  
GO 
Copy
EXP(LOG(20))   |LOG(EXP(20))    |
---------------+----------------+
           20.0|            20.0|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

JS 의 EXP

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

 Math.E
Copy

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

변환 함수

CONVERT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

Copy

Snowflake SQL 설명서

CAST( <source_expr> AS <target_data_type> )

Copy

 SELECT CONVERT(INT, '1998') as MyDate
Copy
MyDate |
-------+
1998   |

Copy
 SELECT
CAST('1998' AS INT) as MyDate;
Copy
MYDATE |
-------+
1998   |

Copy

날짜 유형을 varchar로 형 변환

 SELECT CONVERT(varchar, getdate(), 1) AS RESULT;
Copy
RESULT   |
---------+
12/08/22 |

Copy
 SELECT
TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy') AS RESULT;
Copy
RESULT   |
---------+
12/08/22 |

Copy
날짜 유형을 크기가 포함된 varchar로 변환하기
 SELECT CONVERT(varchar(2), getdate(), 1) AS RESULT;
Copy
RESULT   |
---------+
07       |

Copy
 SELECT
LEFT(TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy'), 2) AS RESULT;
Copy
RESULT   |
---------+
07       |

Copy

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

날짜 형식

코드

형식

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

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

TRY_CONVERT

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

(SQL Server Language Reference TRY_CONVERT)

구문

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

소스 패턴

기본 변환

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

 TRY_CONVERT( INT, 'test')
Copy

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

 TRY_CAST( 'test' AS INT)
Copy

TRY_CAST

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

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

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

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

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

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

Known Issues

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

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

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

 TO_VARCHAR(1234);
TO_CHAR(1);
Copy

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

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

다음으로 변환됩니다

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

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

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

 TRY_CAST(14.85 AS INT)
Copy

다음으로 변환됩니다

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

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

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

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

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

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

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

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

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

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

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

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

별칭

SqlServer 결과

Snowflake 결과

NUMERIC_RESULT

12345

12345

DECIMAL_RESULT

123.45

123.45

INT_RESULT

123

123

FLOAT_RESULT

123.02

123.02

DOUBLE_PRECISION_RESULT

123.02

123.02

DATE_RESULT

2017-01-01

2017-01-01

DATETIME_RESULT

2017-01-01 12:00:00.000

2017-01-01 12:00:00.000

SMALLDATETIME_RESULT

2017-01-01 12:00:00

2017-01-01 12:00:00.000

TIME_RESULT

12:00:00.0000000

12:00:00

TIMESTAMP_RESULT

0x323031372D30312D

2017-01-01 12:00:00.000

DATETIMEOFFSET_RESULT

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

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

VARCHAR_RESULT

1234

1234

CHAR_RESULT

1

1

SQL_VARIANT_RESULT

2017-01-01 12:00:00

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

GEOGRAPHY_RESULT

0xE610000001148716D9CEF7D34740D7A3703D0A975EC08716D9CEF7D34740CBA145B6F3955EC0

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

관련 EWIs

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

날짜 및 시간 함수

AT TIME ZONE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

inputdate AT TIME ZONE timezone

Copy

Snowflake SQL 설명서

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

CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )

Copy

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

결과:

                          DATE|
------------------------------+
2022-11-24 02:00:45.200 -09:00|

Copy
 SELECT
CONVERT_TIMEZONE('America/Anchorage', CAST('2022-11-24 11:00:45.2000000 +00:00' as TIMESTAMP_TZ(7)));
Copy

결과:

                          DATE|
------------------------------+
2022-11-24 02:00:45.200 -09:00|

Copy

코드:

 SELECT current_timestamp at time zone 'Central America Standard Time';
Copy

결과:

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

Copy

코드:

 SELECT
CONVERT_TIMEZONE('America/Costa_Rica', CURRENT_TIMESTAMP() /*** SSC-FDM-TS0024 - CURRENT_TIMESTAMP in At Time Zone statement may have a different behavior in certain cases ***/);
Copy

결과:

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

Copy

Known Issues

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

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

결과:

                          DATE|
------------------------------+
2022-12-14 20:04:18.317 -05:00| 

Copy
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-TS0063 - TIME ZONE NOT SUPPORTED IN SNOWFLAKE ***/!!!
CURRENT_TIMESTAMP() at time zone 'Turks And Caicos Standard Time';
Copy

관련 EWIs

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

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

DATEADD

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DATEADD (datepart , number , date )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

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

Copy

코드:

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

결과:

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

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

DATEDIFF

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DATEDIFF ( datepart , startdate , enddate )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

DIFF|
----+
   1|

Copy

코드:

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

결과:

DIFF|
----+
   1|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

DATEFROMPARTS

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DATEFROMPARTS ( year, month, day )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

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

결과:

    RESULT|
----------+
2022-12-12|

Copy

코드:

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

결과:

    RESULT|
----------+
2022-12-12|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

DATENAME

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DATENAME ( datepart , date )  

Copy

참고

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

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

Copy

코드:

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

결과:

DATE1|DATE2|DATE3  |
-----+-----+-------+
May  |3    |Tuesday|

Copy

코드:

 SELECT MONTHNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE1,
DAYNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE2,
DAYNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE3;
Copy

결과:

DATE1|DATE2|DATE3 |
-----+-----+------+
May  |Tue  |Tue   |

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

DATEPART

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DATEPART ( datepart , date )  

Copy

Snowflake SQL 설명서

DATE_PART( <date_or_time_part> , <date_or_time_expr> )

Copy

코드:

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

결과:

YEAR |
-----+
 2022|

Copy

코드:

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

결과:

YEAR |
-----+
 2022| 

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

DAY

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

DAY ( date )  

Copy

Snowflake SQL 설명서

DAY( <date_or_timestamp_expr> )

Copy

코드:

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

결과:

DAY  |
-----+
   10|

Copy

코드:

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

결과:

DAY  |
-----+
   10|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

EOMONTH

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

EOMONTH ( start_date [, month_to_add ] )  

Copy

Snowflake SQL 설명서

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

Copy

코드:

 SELECT EOMONTH (GETDATE()) AS Result; 
Copy

결과:

    RESULT|
----------+
2022-05-31|

Copy

코드:

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

결과:

    RESULT|
----------+
2022-05-31|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

GETDATE

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

GETDATE() 

Copy

Snowflake SQL 설명서

CURRENT_TIMESTAMP( [ <fract_sec_precision> ] )

Copy

코드:

 SELECT GETDATE() AS DATE;
Copy

결과:

DATE                   |
-----------------------+
2022-05-06 09:54:42.757|

Copy

코드:

 SELECT CURRENT_TIMESTAMP() :: TIMESTAMP AS DATE;
Copy

결과:

DATE                   |
-----------------------+
2022-05-06 08:55:05.422|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

MONTH

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

MONTH( date )  

Copy

Snowflake SQL 설명서

MONTH ( <date_or_timestamp_expr> )

Copy

코드:

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

결과:

MONTH|
-----+
   10|

Copy

코드:

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

결과:

MONTH|
-----+
   10|

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SWITCHOFFSET

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

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

 SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   
Copy
 SWITCHOFFSET_UDF ( timestamp_tz_expression, timezoneoffset_expression )   
Copy

코드:

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

결과:

fr_time                         cr_time
------------------------------- ----------------------------------
1998-09-20 7:45:50.71345 +02:00 1998-09-19 23:45:50.7134500 -06:00

Copy

코드:

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

결과:

fr_time                         cr_time
------------------------------- ----------------------------------
1998-09-20 7:45:50.71345 +02:00 1998-09-19 23:45:50.7134500 -06:00

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SYSDATETIME

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SYSDATETIME ( )  

Copy

Snowflake SQL 설명서

LOCALTIME()

Copy

코드:

 SELECT SYSDATETIME ( ) AS SYSTEM_DATETIME;
Copy

결과:

SYSTEM_DATETIME        |
-----------------------+
2022-05-06 12:08:05.501|

Copy

코드:

 SELECT LOCALTIME ( ) AS SYSTEM_DATETIME;
Copy

결과:

SYSTEM_DATETIME        |
-----------------------+
211:09:14              |

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

SYSUTCDATETIME

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

SYSUTCDATETIME ( )  

Copy

Snowflake SQL 설명서

SYSDATE()

Copy

코드:

 SELECT SYSUTCDATETIME() as SYS_UTC_DATETIME;
Copy

결과:

SYSTEM_UTC_DATETIME        |
---------------------------+
2023-02-02 20:59:28.0926502|

Copy

코드:

 SELECT
SYSDATE() as SYS_UTC_DATETIME;
Copy

결과:

SYSTEM_UTC_DATETIME      |
-------------------------+
2023-02-02 21:02:05.557  |

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.

YEAR

Applies to
  • [x] SQL 서버

  • [x] Azure 시냅스 분석

설명

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

샘플 소스 패턴

구문

YEAR( date )  

Copy

Snowflake SQL 설명서

YEAR ( <date_or_timestamp_expr> )

Copy

코드:

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

결과:

YEAR |
-----+
2022 |

Copy

코드:

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

결과:

YEAR |
-----+
2022 |

Copy

알려진 문제

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

관련 EWIs

관련 EWIs 없음.