SnowConvert AI - SQL Server-Azure Synapse - Funções internas

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Para mais informações sobre funções internas e seus equivalentes no Snowflake, consulte também [Funções internas comuns](../general/ built-in-functions.md).

Agregação

TransactSQL

Snowflake

Notas

TransactSQL

Snowflake

Notas

APPROX_COUNT_DISTINCT

APPROX_COUNT_DISTINCT

AVG​

AVG

CHECKSUM_AGG

*a ser definido

COUNT

COUNT

COUNT_BIG

*a ser definido

GROUPING

GROUPING

GROUPING_ID

GROUPING_ID

MAX

MAX

MIN

MIN

STDEV

STDDEV, STDEV_SAMP

STDEVP

STDDEV_POP

SUM

SUM

VAR

VAR_SAMP

VARP

VAR_POP​

Analítico

TransactSQL

Snowflake

Notas

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

Agrupamento

TransactSQL

Snowflake

Notas

COLLATIONPROPERTY

*a ser definido

TERTIARY_WEIGHTS

*a ser definido

Configuração

TransactSQL

Snowflake

Notas

​@@DBTS

*a ser definido

@@LANGID

*a ser definido

@@LANGUAGE

*a ser definido

@@LOCK_TIMEOUT

*a ser definido

@@MAX_CONNECTIONS

*a ser definido

@@MAX_PRECISION

*a ser definido

@@NESTLEVEL

*a ser definido

@@OPTIONS

*a ser definido

@@REMSERVER

*a ser definido

@@SERVERNAME

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

@@SERVICENAME

*a ser definido

@@SPID

*a ser definido

@@TEXTSIZE

*a ser definido

@@VERSION

*a ser definido

Pode ser imitado com o uso de CURRENT_VERSION

Conversão

TransactSQL

Snowflake

Notas

CAST

CAST

<p>Retorna NULL se o valor não for um número; caso contrário, retorna o valor numérico como seu valor.<br>Ao usar operadores como &#x3C;, >, =, &#x3C;> deve ser seguido por um NULL</p>

CONVERT

Verifique CONVERT

O mesmo comportamento de CAST

PARSE

*a ser definido

TRY_CAST

TRY_CAST

<p>Retorna NULL se o valor não for um número; caso contrário, retorna o valor numérico como seu valor.<br>Ao usar operadores como &#x3C;, >, =, &#x3C;> deve ser seguido por um NULL</p>

TRY_CONVERT

*a ser definido

O mesmo comportamento de TRY_CAST

TRY_PARSE

TRY_CAST

O comportamento pode ser diferente ao analisar um número inteiro como data ou carimbo de data/hora.

Criptográfico

TransactSQL

Snowflake

Notas

ASYMKEY_ID

*a ser definido

ASYMKEYPROPERTY

*a ser definido

CERTENCODED

*a ser definido

CERTPRIVATEKEY

*a ser definido

DECRYPTBYASYMKEY

*a ser definido

DECRYPTBYCERT

*a ser definido

DECRYPTBYKEY

*a ser definido

DECRYPTBYKEYAUTOASYMKEY

*a ser definido

DECRYPTBYKEYAUTOCERT

*a ser definido

DECRYPTBYPASSPHRASE

_*a ser definido_​

Pode ser imitado com o uso de DENCRYPT_RAW

ENCRYPTBYASYMKEY

*a ser definido

ENCRYPTBYCERT

*a ser definido

ENCRYPTBYKEY

*a ser definido

ENCRYPTBYPASSPHRASE

*a ser definido

Pode ser imitado com o uso de ENCRYPT_RAW

HASHBYTES

MD5, SHA1, SHA2

<p>Atualmente só hash separado é compatível. Use o adequado de acordo com o algoritmo </p><p><strong>MD5</strong> necessário, é um </p><p><strong>SHA1</strong> de 32 caracteres com codificação hexadecimal, tem uma cadeia de caracteres codificada em hexadecimal de 40 caracteres contendo o </p><p><strong>SHA2</strong> de 160 bits, uma cadeia de caracteres codificada em hexadecimal contendo o resumo da mensagem SHA-2 de N bits. Os tamanhos são:</p><p>224 = SHA-224</p><p>256 = SHA-256 (padrão)</p><p>384 = SHA-384</p><p>512 = SHA-512</p>

IS_OBJECTSIGNED

*a ser definido

KEY_GUID

*a ser definido

KEY_ID

*a ser definido

KEY_NAME

*a ser definido

SIGNBYASYMKEY

*a ser definido

SIGNBYCERT

*a ser definido

SYMKEYPROPERTY

*a ser definido

VERIGYSIGNEDBYCERT

*a ser definido

Cursor

TransactSQL

Snowflake

Notas

@@CURSOR_ROWS

*a ser definido

@@FETCH_STATUS

*a ser definido

CURSOR_STATUS

*a ser definido

Tipo de dados

TransactSQL

Snowflake

Notas

DATALENGTH

OCTET_LENGTH

​O Snowflake não usa bytes fracionários, portanto, o comprimento é sempre calculado como 8 * OCTET_LENGTH

IDENT_SEED

*a ser definido

IDENT_CURRENT

*a ser definido

IDENTITY

*a ser definido

IDENT_INCR

*a ser definido

SQL_VARIANT_PROPERTY

*a ser definido

Data e hora

TransactSQL

Snowflake

Notas

@@DATEFIRST

*a ser definido

@@LANGUAGE

*a ser definido

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

CURRENT_TIMEZONE

*a ser definido

DATEADD

DATEADD

DATEDIFF

DATEDIFF

DATEDIFF_BIG

*a ser definido

DATEFROMPARTS

DATE_FROM_PARTS

DATENAME

*a ser definido

<p>Esta função recebe dois argumentos: um datepart e um date. Ela retorna uma cadeia de caracteres. Aqui estão as partes de data compatíveis do TSQL para Snowflake</p><p><strong>year, yyyy, yy</strong> -> DATE_PART(YEAR, «$date») <strong>quarter, qq, q</strong> -> DATE_PART(QUARTER, «$date»)<br><strong>month, mm, m</strong> -> <strong>MONTHNAME</strong>( «$date»), fornecendo apenas um nome do mês de três letras em inglês<br><strong>dayofyear, dy, y</strong> -> DATE_PART(DAYOFYEAR, «$date»)<br><strong>day, dd, d</strong> -> DATE_PART(DAY, «$date»)<br><strong>week, wk, ww</strong> -> DATE_PART(WEEK, «$date»)</p><p><strong>weekday, dw</strong> -> <strong>DAYNAME</strong>(«$date»), fornecendo apenas um nome de dia de três letras em inglês<br><strong>hour, hh</strong> -> DATE_PART(HOUR, «$date»)<br><strong>minute, n</strong> -> DATE_PART(MINUTE, «$date»)<br><strong>second, ss, s</strong> -> DATE_PART(SECOND, «$date»)<br><strong>millisecond, ms</strong> -> DATE_PART(MS, «$date») <strong>microsecond, mcs</strong> -> DATE_PART(US, «$date»)<br><strong>nanosecond, ns</strong> -> DATE_PART(NS, «$date»)<br><strong>TZoffset, tz</strong> -> precisa de uma implementação especial para obter o deslocamento de tempo</p>

DATEPART

DATE_PART

DATETIME2FROMPARTS

*a ser definido

DATETIMEFROMPARTS

*a ser definido

​Pode ser imitado usando uma combinação de DATE_FROM_PARTS e TIME_FROM_PARTS

DATETIMEOFFSETFROMPARTS

*a ser definido

DAY

DAY

EOMONTH

*a ser definido

Pode ser imitado com o uso de LAST_DAY

GETDATE

GETDATE

GETUTCDATE

*a ser definido

Pode ser imitado com o uso de CONVERT_TIMEZONE

ISDATE

*a ser definido

<p>Pode ser imitado usando <strong>TRY_TO_DATE</strong></p><p>Retorna NULL se o valor não for um <strong>date</strong>, caso contrário, retorna o valor da data como está.<br>Ao utilizar operadores como &#x3C;, >, =, &#x3C;> então deve ser seguido por um NULL</p>

MONTH

MONTH

SMALLDATETIMEFROMPARTS

*a ser definido

​​Pode ser imitado usando uma combinação de DATE_FROM_PARTS e TIME_FROM_PARTS

SWITCHOFFSET

*a ser definido

​Pode ser imitado com o uso de CONVERT_TIMEZONE

SYSDATETIME

LOCALTIME

SYSDATETIMEOFFSET

*a ser definido

​Pode ser imitado com o uso de CONVERT_TIMEZONE e LOCALTIME

SYSUTCDATETIME

*a ser definido

​​Pode ser imitado com o uso de CONVERT_TIMEZONE e LOCALTIME

TIMEFROMPARTS

TIME_FROM_PARTS

TODATETIMEOFFSET

*a ser definido

​Pode ser imitado com o uso de CONVERT_TIMEZONE

YEAR

YEAR

JSON

TransactSQL

Snowflake

Notas

ISJSON

CHECK_JSON

​Esse é um «recurso de versão preliminar» no Snowflake

JSON_VALUE

*a ser definido

<p>Pode ser imitado usando</p><p>TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))</p>

JSON_QUERY

*a ser definido

JSON_MODIFY

*a ser definido

Matemática

TransactSQL

Snowflake

Notas

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

Lógico

TransactSQL

Snowflake

Notas

CHOOSE

*a ser definido

Pode ser imitado com o uso de DECODE

GREATEST

GREATEST

IIF

IIF

LEAST

LEAST

NULLIF

NULLIF

Metadados

TransactSQL

Snowflake

Notas

TransactSQL

Snowflake

Notas

@@PROCID

*a ser definido

APP_NAME

*a ser definido

APPLOCK_MODE

*a ser definido

APPLOCK_TEST

*a ser definido

ASSEMBLYPROPERTY

*a ser definido

COL_LENGTH

Uma UDF nomeada COL_LENGTH_UDF é fornecida para recuperar essas informações. Esta UDF funciona apenas com tipos VARCHAR, conforme especificado na documentação do Transact-SQL. Para outros tipos de dados, retorna NULL.

COL_NAME

*a ser definido

COLUMNPROPERTY

*a ser definido

DATABASE_PRINCIPAL_ID

*a ser definido

Mapeia para CURRENT_USER quando não há argumentos

DATABASEPROPERTYEX

*a ser definido

DB_ID

*a ser definido

Recomendamos alterar para CURRENT_DATABASE(). Se houver necessidade de emular esta funcionalidade,
SELECT DATE_PART(EPOCH,CREATED) FROM INFORMATION_SCHEMA.DATABASES WHERE DATABASE_NAME = “DB” ;
pode conseguir algo semelhante

DB_NAME

*a ser definido

Mais utilizado no nome do procedimento mencionado acima

FILE_ID

*a ser definido

FILE_IDEX

*a ser definido

FILE_NAME

*a ser definido

FILEGROUP_ID

*a ser definido

FILEGROUP_NAME

*a ser definido

FILEGROUPPROPERTY

*a ser definido

FILEPROPERTY

*a ser definido

FULLTEXTCATALOGPROPERTY

*a ser definido

FULLTEXTSERVICEPROPERTY

*a ser definido

INDEX_COL

*a ser definido

INDEXKEY_PROPERTY

*a ser definido

INDEXPROPERTY

*a ser definido

NEXT VALUE FOR

*a ser definido

OBJECT_DEFINITION

*a ser definido

OBJECT_ID

*a ser definido

Na maioria dos casos, pode ser substituído. A maioria dos casos é como: IF OBJECT_ID(“dbo.TABLE’) IS NOT NULL DROP TABLE dbo.Table, que pode ser substituído por um DROP TABLE IF EXISTS (esta sintaxe também é compatível com SQL SERVER). Se o object_id precisar ser replicado, uma UDF é adicionada, dependendo do segundo parâmetro da chamada de função.

OBJECT_NAME

*a ser definido

Pode ser substituído por: 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”

Esta transformação só ocorre quando está dentro de um DeclareStatement.

ObjectName é o nome do TopLevelObject que contém a função.

OBJECT_SCHEMA_NAME

*a ser definido

OBJECT_SCHEMA_NAME(@@PROCID)

:OBJECT_SCHEMA_NAME

Esta transformação só ocorre quando está dentro de um DeclareStatement.

OBJECTPROPERTY

*a ser definido

OBJECTPROPERTYEX

*a ser definido

ORIGINAL_DB_NAME

*a ser definido

PARSENAME

PARSENAME_UDF

Ela cria uma UDF para emular o mesmo comportamento da função Parsename.

*a ser definido

SCHEMA_NAME

*a ser definido

SCOPE_IDENTITY

*a ser definido

Se isso for necessário, eu recomendaria o uso de sequências e a captura do valor antes da inserção

SERVERPROPERTY

*a ser definido

STATS_DATE

*a ser definido

TYPE_ID

*a ser definido

TYPE_NAME

*a ser definido

TYPEPROPERTY

*a ser definido

VERSION

*a ser definido

Classificação

TransactSQL

Snowflake

Notas

DENSE_RANK

DENSE_RANK

NTILE

NTILE

RANK

RANK

ROW_NUMBER

ROW_NUMBER

Replicação

TransactSQL

Snowflake

Notas

PUBLISHINGSERVERNAME

*a ser definido

Conjunto de linhas

TransactSQL

Snowflake

Notas

OPENDATASOURCE

*a ser definido

OPENJSON

*a ser definido

QPENQUERY

*a ser definido

OPENROWSET

*a ser definido

OPENXML

OPENXML_UDF

Função definida pelo usuário usada como um comportamento equivalente no Snowflake.

STRING_SPLIT

SPLIT_TO_TABLE

O sinalizador enable_ordinal em STRING_SPLIT do Transact-SQL não é diretamente compatível com a função SPLIT_TO_TABLE do Snowflake. Se a coluna ordinal for necessária, uma função definida pelo usuário (UDF) nomeada como STRING_SPLIT_UDF será gerada para replicar esse comportamento. Sem a coluna ordinal, observe que STRING_SPLIT retorna uma única coluna denominada value, enquanto SPLIT_TO_TABLE retorna três colunas: value, index (equivalente ao ordinal) e seq. Para detalhes adicionais, consulte a documentação de SPLIT_TO_TABLE.

Segurança

TransactSQL

Snowflake

Notas

CERTENCODED

*a ser definido

CERTPRIVATEKEY

*a ser definido

CURRENT_USER

CURRENT_USER

DATABASE_PRINCIPAL_ID

*a ser definido

HAS_PERMS_BY_NAME

*a ser definido

IS_MEMBER

*a ser definido

Alteração para a consulta INFORMATION_SCHEMA embora o cliente possa exigir a definição de novas funções

IS_ROLEMEMBER

*a ser definido

<p>O Snowflake tem uma função semelhante</p><p><strong>IS_ROLE_IN_SESSION</strong></p>

IS_SRVROLEMEMBER

*a ser definido

LOGINPROPERTY

*a ser definido

ORIGINAL_LOGIN

*a ser definido

PERMISSIONS

*a ser definido

PWDCOMPARE

*a ser definido

PWDENCRYPT

*a ser definido

SCHEMA_ID

*a ser definido

SCHEMA_NAME

*a ser definido

SESSION_USER

*a ser definido

SUSER_ID

*a ser definido

SUSER_NAME

*a ser definido

SUSER_SID

*a ser definido

SUSER_SNAME

*a ser definido

sys.fn_builtin\_permissions

*a ser definido

sys.fn_get_audit_file

*a ser definido

sys.fn_my_permissions

*a ser definido

SYSTEM_USER

*a ser definido

USER_ID

*a ser definido

USER_NAME

*a ser definido

Mapeado para CURRENT_USER

Cadeia de caracteres

TransactSQL

Snowflake

Notas

ASCII

ASCII

CHAR

CHR, CHAR

CHARINDEX

CHARINDEX

CONCAT

CONCAT

CONCAT_WS

CONCAT_WS

COALESCE

COALESCE

DIFFERENCE

*a ser definido

FORMAT

TO_CHAR

O SSC-EWI-0006 ou SSC-FDM-0036 pode ser gerado quando o formato (numérico ou de data e hora) não é totalmente compatível.

LEFT

LEFT

LEN

LEN

LOWER

LOWER

LTRIM

LTRIM

NCHAR

*a ser definido

PATINDEX

*a ser definido

Mapeado para REGEXP_INSTR

QUOTENAME

QUOTENAME_UDF

Cria um UDF para emular o mesmo comportamento da função Quotename

REPLACE

REPLACE

REPLICATE

REPEAT

REVERSE

REVERSE

RIGHT

RIGHT

RTRIM

RTRIM

SOUNDEX

SOUNDEX

SPACE

*a ser definido

STR

*a ser definido

STRING_AGG

*a ser definido

STRING_ESCAPE

*a ser definido

STRING_SPLIT

SPLIT_TO_TABLE

STUFF

*a ser definido

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

Sistema

TransactSQL

Snowflake

Notas

$PARTITION

*a ser definido

@@ERROR

*a ser definido

@@IDENTITY

*a ser definido

Se isso for necessário, eu recomendaria o uso de sequências e a captura do valor antes da inserção

@@PACK_RECEIVED

*a ser definido

@@ROWCOUNT

*a ser definido

@@TRANCOUNT

*a ser definido

BINARY_CHECKSUM

*a ser definido

CHECKSUM

*a ser definido

COMPRESS

COMPRESS

<p>​A versão do Snowflake tem um argumento do método para indicar o método de compressão. Estes são os valores válidos: <strong>SNAPPY, ZLIB, ZSTD, BZ2</strong></p><p>O nível de compressão é especificado entre parênteses e deve ser um número inteiro não negativo.</p>

CONNECTIONPROPERTY

*a ser definido

CONTEXT_INFO

*a ser definido

CURRENT_REQUEST_ID

*a ser definido

CURRENT_TRANSACTION_ID

*a ser definido

DECOMPRESS

*a ser definido

O Snowflake tem duas funções para isso: DECOMPRESS_BINARY e DECOMPRESS_STRING

ERROR_LINE

*a ser definido

<p>SnowScript: incompatível no Snowflake com **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> <p>JavaScript: mapeará para o auxiliar **ERROR\_LINE**. EXEC O auxiliar capturará a propriedade de linha da exceção do rastreamento da pilha. </p>

ERROR_MESSAGE

SQLERRM

A adição da mensagem de erro SSC-FDM-TS0023 retornada poderia ser diferente no Snowflake.

ERROR_NUMBER

*a ser definido

<p>SnowScript: incompatível no Snowflake com **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> <p>JavaScript: mapeará para o auxiliar **ERROR\_NUMBER**. O auxiliar EXEC capturará a propriedade de código da exceção.</p>

ERROR_PROCEDURE

Mapeada

<p>SnowScript: usa o nome do procedimento atual, o valor do resultado **SSC-FDM-TS0023** adicionado é baseado no procedimento armazenado em que a função é chamada, em vez de onde a exceção ocorre.</p> <p>JavaScript: mapeará para o auxiliar **ERROR\_PROCEDURE**, retirado da propriedade do procedimento `arguments.callee.name` </p>

ERROR_SEVERITY

*a ser definido

<p>SnowScript: incompatível no Snowflake com **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p>

ERROR_STATE

SQLSTATE

<p>SnowScript: convertida na propriedade **SQLSTATE** do Snowflake, o valor retornado **SSC-FDM-TS0023** adicionado poderia ser diferente no Snowflake.</p> <p>JavaScript: o auxiliar capturará a propriedade de estado da exceção </p>

FORMATMESSAGE

FORMATEMESSAGE_UDF

Cria um UDF para emular o mesmo comportamento da função FORMATMESSAGE, mas com algumas limitações.

GET_FILESTREAM_TRANSACTION_CONTEXT

*a ser definido

GETANSINULL

*a ser definido

HOST_ID

*a ser definido

HOST_NAME

*a ser definido

ISNULL

NVL

ISNUMERIC

*a ser definido

Não há equivalente direto, mas pode ser mapeado para um UDF personalizado, retornando os mesmos valores que no TSQL.

MIN_ACTIVE_ROWVERSION

*a ser definido

NEWID

*a ser definido

​Mapeado para UUID_STRING

NEWSEQUENTIALID

*a ser definido

ROWCOUNT_BIG

*a ser definido

SESSION_CONTEXT

*a ser definido

SESSION_ID

*a ser definido

XACT_STATE

*a ser definido

Estatística do sistema

TransactSql

Snowflake

Notas

@@CONNECTIONS

*a ser definido

<p>​O Snowflake tem uma função semelhante: <strong>LOGIN_HISTORY.</strong></p><p>Retorna eventos de login dentro de um intervalo de tempo especificado</p>

@@PACK_RECEIVED

*a ser definido

@@CPU_BUSY

*a ser definido

@@PACK_SENT

*a ser definido

@@TIMETICKS

*a ser definido

@@IDLE

*a ser definido

@@TOTAL_ERRORS

*a ser definido

@@IO_BUSY

*a ser definido

@@TOTAL_READ

*a ser definido

@@PACKET_ERRORS

*a ser definido

@@TOTAL_WRITE

*a ser definido

Texto e imagem

TransactSQL

Snowflake

Notas

TEXTPTR

*a ser definido

TEXTVALID

*a ser definido

Acionador

TransactSQL

Snowflake

Notas

COLUMNS_UPDATED

*a ser definido

EVENTDATA

*a ser definido

TRIGGER_NESTLEVEL

*a ser definido

UPDATE

*a ser definido

Funções do sistema

Esta seção descreve os equivalentes funcionais das funções do sistema no Transact-SQL para código Snowflake SQL e JavaScript, orientados para a criação de UDFs no Snowflake.

ISNULL

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Substitui NULL pelo valor de substituição especificado. (ISNULL no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
ISNULL ( check_expression , replacement_value )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

NVL( <expr1> , <expr2> )
Copy

Exemplos

SQL Server

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

Resultado:

COMPANYNAME

SNOWFLAKE

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

Resultado:

COMPANYNAME

SNOWFLAKE

NEWID

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Cria um valor exclusivo do tipo uniqueidentifier. (NEWID no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
NEWID ( )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

UUID_STRING()
Copy

Exemplos

Aviso

Os resultados podem ser diferentes porque gera um ID exclusivo em tempo de execução

SQL Server

SELECT NEWID ( ) AS ID;
Copy

Resultado:

ID

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

Snowflake SQL
SELECT
UUID_STRING( ) AS ID;
Copy

Resultado:

ID

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

NULLIF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um valor nulo se as duas expressões especificadas forem iguais.

Amostra de padrão de origem

Sintaxe

SQL Server
NULLIF ( check_expression , replacement_value )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

NULLIF( <expr1> , <expr2> )
Copy

Exemplos

SQL Server

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

Resultado:

RESULT1

RESULT2

6

nulo

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

Resultado:

RESULT1

RESULT2

6

nulo

@@ROWCOUNT

Applies to
  • SQL Server

Descrição

Retorna o número de linhas afetadas pela última instrução. (@@ROWCOUNT no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
@@ROWCOUNT
Copy
Snowflake SQL

Documentação do Snowflake SQL

SQLROWCOUNT
Copy

Exemplos

SQL Server

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

Resultado:

3

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

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

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

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

CALL procedure1();
Copy

Resultado:

:ADDCOUNT

3

FORMATMESSAGE

Applies to
  • SQL Server

Descrição

Constrói uma mensagem a partir de uma mensagem existente em sys.messages ou de uma cadeia de caracteres fornecida. (FORMATMESSAGE no Transact-SQL).

Amostra de padrão de origem

Como o Snowflake não oferece suporte à função FORMATMESSAGE, a função FORMATMESSAGE_UDF é adicionada para simular seu comportamento.

Sintaxe

SQL Server

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

Exemplos

SQL Server

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

Resultado:

RESULT

Esta é a primeira variável e esta é a segunda variável.

Snowflake

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

Resultado:

RESULT

Esta é a primeira variável e esta é a segunda variável.

FORMATMESSAGE_UDF

O Snowflake não tem uma função com a funcionalidade de FORMATMESSAGE. O SnowConvert AI gera a seguinte UDF Python para emular o comportamento de FORMATMESSAGE.

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

Este UDF pode não funcionar corretamente em alguns casos:

  • O uso do espaço reservado %I64d gerará um erro.

  • Se o número de argumentos de substituição for diferente do número de espaços reservados, ocorrerá um erro.

  • Alguns espaços reservados sem sinal, como %u ou %X, não se comportarão adequadamente ao formatar o valor.

  • Ele não pode lidar com message_ids.

Funções de cadeia de caracteres

Esta seção descreve os equivalentes funcionais das funções de cadeia de caracteres no Transact-SQL para código Snowflake SQL e JavaScript, orientados para a criação de UDFs no Snowflake.

CHAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um caractere de byte único com o número inteiro enviado como parâmetro na tabela ASCII (CHAR no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
CHAR( expression )
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

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

Documentação completa do JavaScript

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

Exemplos

SQL Server

SELECT CHAR(170) AS SMALLEST_A
Copy

Saída:

SMALLEST_A

ª

Snowflake SQL
SELECT
CHAR(170) AS SMALLEST_A;
Copy

Resultado:

SMALLEST_A

ª

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

SELECT GET_CHAR(170) SMALLEST_A;
Copy

Resultado:

SMALLEST_A

ª

CHARINDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o índice da primeira ocorrência do valor especificado enviado como parâmetro quando ele corresponde (CHARINDEX no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação completa do Snowflake SQL

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

Documentação completa do JavaScript

String.indexOf( search_value [, index] )
Copy

Exemplos

SQL Server

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

Resultado:

INDEX

33

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

Resultado:

INDEX

33

JavaScript

Nota

Os índices no Transact começam em 1, em vez do JavaScript que começa em 0.

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

Resultado:

INDEX

33

COALESCE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Avalia os argumentos em ordem e retorna o valor atual da primeira expressão que inicialmente não é interpretada como NULL. Por exemplo,SELECT COALESCE(NULL, NULL, “third_value”, “fouth_value”); retorna o terceiro valor porque o terceiro valor é o primeiro valor que não é nulo. (COALESCE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

StartDate

FIRST_NOT_NULL

2009-01-14

2000-01-01

2008-01-31

2000-01-01

2007-11-11

2000-01-01

2007-12-05

2010-05-30

2010-05-31

2000-01-01

2008-01-06

2000-01-01

2008-01-24

2000-01-01

2009-02-08

2000-01-01

2008-12-29

2000-01-01

2009-01-16

2000-01-01

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

Resultado:

StartDate

FIRST_NOT_NULL

2009-01-14

2000-01-01

2008-01-31

2000-01-01

2007-11-11

2000-01-01

2007-12-05

2010-05-30

2010-05-31

2000-01-01

2008-01-06

2000-01-01

2008-01-24

2000-01-01

2009-02-08

2000-01-01

2008-12-29

2000-01-01

2009-01-16

2000-01-01

CONCAT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Faz uma concatenação de valores de cadeia de caracteres com outros. (CONCAT no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação completa do Snowflake SQL

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

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

Documentação completa do JavaScript

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

Exemplos

SQL Server

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

Saída:

TITLE

Raio de luz

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

Saída:

TITLE

Raio de luz

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

Saída:

   TITLE|
Copy

————| Ray of Light|

LEFT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna a parte direita de uma cadeia de caracteres com o número especificado de caracteres. (RIGHT no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
LEFT ( character_expression , integer_expression )  
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

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

Função usada para emular o comportamento

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

Exemplos

SQL Server

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

Saída:

FIRST_NAME

John

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

Saída:

FIRST_NAME

John

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

Saída:

FIRST_NAME

John

LEN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o comprimento de uma cadeia de caracteres (LEN no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
LEN( string_expression )
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

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

Documentação completa do JavaScriptSQL

 string.length
Copy

Exemplos

SQL Server

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

Saída:

LEN

11

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

Saída:

LEN

11

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

Saída:

LEN

11

LOWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Converte uma cadeia de caracteres em minúsculas (LOWER no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
LOWER ( character_expression )  
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

LOWER( <expr> )
Copy
JavaScript

Documentação completa do JavaScriptSQL

 String.toLowerCase( )
Copy

Exemplos

SQL Server

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

Saída:

LOWERCASE

você é uma previsão dos bons

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

Saída:

LOWERCASE

você é uma previsão dos bons

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

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

Saída:

LOWERCASE

você é uma previsão dos bons

NCHAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o caractere UNICODE de um número inteiro enviado como parâmetro (NCHAR no Transact-SQL).

Amostra de padrão de origem

Sintaxe

NCHAR( expression )
Copy
Argumentos

expression: Expressão de número inteiro.

Tipo de retorno

Valor da cadeia de caracteres, que depende da entrada recebida.

Exemplos

Consulta

SELECT NCHAR(170);
Copy
Resultado

ª

Nota

A equivalência dessa função no JavaScript está documentada em CHAR.

REPLACE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Substitui todas as ocorrências de um valor de cadeia de caracteres especificado por outro valor de cadeia de caracteres. (REPLACE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
REPLACE ( string_expression , string_pattern , string_replacement )  
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

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

Exemplos

SQL Server

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

Saída:

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

Saída:

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

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

\ Saída:

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

REPLICATE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Replica um valor de cadeia de caracteres um número especificado de vezes (REPLICATE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
REPLICATE( string_expression, number_expression )
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

Documentação do JavaScript

String.repeat( number_expression )
Copy

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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

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

Resultado:

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

RTRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna uma expressão de caractere depois de remover os espaços em branco à esquerda (RTRIM no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
RTRIM( string_expression )
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

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

Função personalizada usada para emular o comportamento

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

Exemplos

SQL Server

Entrada:

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

Saída:

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

Resultado:

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

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

Resultado:

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

SPACE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um número de ocorrências de espaços em branco (SPACE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
SPACE ( integer_expression )  
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

SPACE(<n>)
Copy
JavaScript

Função personalizada usada para emular o comportamento

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

Exemplos

SQL Server

Entrada:

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

Saída:

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

Entrada:

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

Saída:

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

Entrada:

 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

Saída:

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

SUBSTRING

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna uma expressão de caractere depois de remover os espaços em branco à esquerda (RTRIM no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
SUBSTRING( string_expression, start, length )
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

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

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

Função personalizada usada para emular o comportamento

 string.substring( indexA [, indexB])
Copy

Exemplos

SQL Server

Entrada:

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

Saída:

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

Resultado:

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

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

Resultado:

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

UPPER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Converte uma cadeia de caracteres em maiúsculas (UPPER no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
UPPER( string_expression ) 
Copy
Snowflake SQL

Documentação completa do Snowflake SQL

UPPER( <expr> )
Copy
JavaScript

Documentação completa do JavaScriptSQL

 String.toUpperCase( )
Copy

Exemplos

SQL Server

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

Saída:

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

Saída:

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

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

\ Saída:

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

ASCII

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o código numérico de um caractere na tabela ASCII (ASCII no Transact-SQL).

Amostra de padrão de origem

Sintaxe

ASCII( expression )
Copy

Argumentos

expression: expressão VARCVHAR ou CHAR.

Tipo de retorno

INT.

Exemplos

Consulta

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

Resultado

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

ASCII no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna o código numérico de um caractere na tabela ASCII (Documentação da funçãoJavaScript charCodeAt).

Amostra de padrão de origem

Sintaxe

 string.charCodeAt( [index] )
Copy
Argumentos

index(opcional): Índice da cadeia de caracteres para obter o caractere e retornar seu número de código na tabela ASCII. Se esse parâmetro não for especificado, será considerado 0 como padrão. \

Tipo de retorno

Int.

Exemplos

Consulta

 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
Resultado
          A|          a|
-----------| ----------|
         65|         97|    
Copy

QUOTENAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna uma string delimitada por aspas (QUOTENAME no Transact-SQL).

Amostra de padrão de origem

Sintaxe

QUOTENAME( string_expression [, quote_character])
Copy

Argumentos

string_expression: Cadeia de caracteres a ser delimitada.

quote_character: um caractere para delimitar a cadeia de caracteres.

Tipo de retorno

NVARCHAR(258). Nulo se a aspa for diferente de (“), ([]), («), ( () ), ( >< ), ({}) ou (`).

Exemplos

Consulta

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

Resultado

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

QUOTENAME no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Infelizmente, essa função não está disponível no JavaScript, mas pode ser implementada usando funções predefinidas.

Amostra de padrão de origem

Exemplo de implementação

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

string: Expressão de cadeia de caracteres para delimitar.

quote: Aspa a ser usada como delimitador.

Tipo de retorno

Cadeia de caracteres.

Exemplos

Consulta

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
Resultado
    HELLO|      
---------|
  `Hello`| 
Copy

CONCAT_WS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Faz uma concatenação de valores de cadeia de caracteres com outros usando um separador entre eles (CONCAT_WS no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Argumentos

separator: Separador para junção.

expression1, ... ,expressionN: Expressão a ser encontrada em uma cadeia de caracteres.

Tipo de retorno

Valor da cadeia de caracteres, depende da entrada recebida.

Exemplos

Consulta

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

Resultado

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

Join no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Concatena os argumentos da cadeia de caracteres à cadeia de caracteres de chamada usando um separador (Documentação da função JavaScript Join).

Amostra de padrão de origem

Sintaxe

 Array.join( separator )
Copy
Argumentos

separator: Caractere para junção.

Tipo de retorno

String.

Exemplos

Consulta

 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
Resultado
        NAME|      
------------|
Mariah Carey|   
Copy

SOUNDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um código de quatro caracteres para avaliar a similaridade de duas cadeias de caracteres (SOUNDEX no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SOUNDEX( string_expression )
Copy

Argumentos

string_expression: Expressão de cadeia de caracteres para reverter.

Tipo de retorno

O mesmo tipo de dados da expressão de cadeia de caracteres enviada como parâmetro.

Exemplos

Consulta

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

Resultado

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

SOUNDEX no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Infelizmente, o JavaScript não oferece um método que execute o algoritmo SOUNDEX, mas ele pode ser implementado manualmente.

Amostra de padrão de origem

Exemplo de implementação

 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
Argumentos

word: Expressão de cadeia de caracteres para obter sua equivalência SOUNDEX.

Tipo de retorno

Cadeia de caracteres.

Exemplos

Consulta

 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
Resultado
      TWO|      TOO|
---------|---------|
     T000|     T000| 
Copy

REVERSE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Inverte uma cadeia de caracteres (REVERSE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

REVERSE( string_expression )
Copy

Argumentos

string_expression: Expressão de cadeia de caracteres para reverter.

Tipo de retorno

O mesmo tipo de dados da expressão de cadeia de caracteres enviada como parâmetro.

Exemplos

Consulta

SELECT REVERSE('rotator') AS PALINDROME;
Copy

Resultado

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

reverse no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Infelizmente, essa função não está disponível no JavaScript, mas pode ser implementada usando funções predefinidas.

Amostra de padrão de origem

Exemplo de implementação

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

string: Expressão de cadeia de caracteres para reverter.

Tipo de retorno

Cadeia de caracteres.

Exemplos

Consulta

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

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

STRING_ESCAPE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Escapa caracteres especiais em textos e retorna o texto com os caracteres escapados. (STRING_ESCAPE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

STRING_ESCAPE( text, type )
Copy

Argumentos

text: Texto para escapar caracteres.

type: Tipo de formato para escapar caracteres. Atualmente, JSON é o único formato suportado.

Tipo de retorno

VARCHAR.

Exemplos

Consulta

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

Resultado

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

stringify no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Converte um objeto em um formato de cadeia de caracteres JSON (Documentação da função JavaScript stringify).

Amostra de padrão de origem

Sintaxe

 JSON.stringify( value )
Copy
Argumentos

value: Expressão de objeto a ser convertida.

Tipo de retorno

Cadeia de caracteres.

Exemplos

Consulta

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

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

TRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna uma expressão de caractere sem espaços em branco (TRIM no Transact-SQL).

Amostra de padrão de origem

Sintaxe

TRIM( string_expression )
Copy

Argumentos

string_expression: Expressões de cadeia de caracteres a serem convertidas.

Tipo de retorno

VARCHAR ou NVARCHAR

Exemplos

SQL Server

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

Saída:

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

Snowflake SQL

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

Saída:

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

trim no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Substitui as ocorrências de um padrão usando um novo padrão enviado como parâmetro (Documentação da função JavaScript Replace).

Amostra de padrão de origem

Sintaxe

 String.trim( )
Copy
Argumentos

Essa função não recebe nenhum parâmetro.

Tipo de retorno

Cadeia de caracteres.

Exemplos

Consulta

 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
Resultado
                           TRIM|      
-------------------------------|
FIRST AND LAST TWO BLANK SPACES|   
Copy

DIFFERENCE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um número inteiro que mede a diferença entre duas cadeias de caracteres usando o algoritmo SOUNDEX (DIFFERENCE no Transact-SQL). \ Conta os caracteres comuns das cadeias de caracteres resultantes da execução do algoritmo SOUNDEX.

Amostra de padrão de origem

Sintaxe

DIFFERENCE( expression1, expression1 )
Copy

Argumentos

expression1, expression2: Expressões de cadeia de caracteres a serem comparadas.

Tipo de retorno

Int.

Exemplos

Consulta

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

Resultado

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

DIFFERENCE no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Infelizmente, essa funcionalidade não está disponível no JS, mas pode ser implementada facilmente.

Nota

Essa função requer a implementação do algoritmo SOUNDEX.

Amostra de padrão de origem

Exemplo de implementação

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

strA, strB: Expressões de cadeia de caracteres resultantes da execução do algoritmo SOUNDEX.

Tipo de retorno

String.

Exemplos

Consulta

 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
Resultado
   DIFFERENCE|
-------------|
            4| 
Copy

FORMAT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um valor formatado com o formato especificado e a cultura opcional (FORMAT no Transact-SQL).

Amostra de padrão de origem

Sintaxe

FORMAT( value, format [, culture])
Copy

Argumentos

value: Expressões de cadeia de caracteres para fornecer o formato.

format: Formato desejado.

culture (opcional): argumento NVarchar que especifica a cultura. Se não for especificado, usa as linguagens da sessão atual.

Tipo de retorno

NULL se o parâmetro de cultura for inválido; caso contrário, ele segue os próximos tipos de dados:

Categoria

Tipo .NET

Numérico

bigint

Int64

Numérico

int

Int32

Numérico

smallint

Int16

Numérico

tinyint

Byte

Numérico

decimal

SqlDecimal

Numérico

numérico

SqlDecimal

Numérico

float

Double

Numérico

real

Single

Numérico

smallmoney

Decimal

Numérico

money

Decimal

Data e hora

date

DateTime

Data e hora

time

TimeSpan

Data e hora

datetime

DateTime

Data e hora

smalldatetime

DateTime

Data e hora

datetime2

DateTime

Data e hora

datetimeoffset

DateTimeOffset

Exemplos

Consulta

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

Resultado

  GREAT BRITAIN|
---------------|
     24/01/2022|  
Copy
Consulta
SELECT FORMAT(244900.25, 'C', 'cr-CR')  AS 'CURRENCY';
Copy
Resultado

CURRENCY

₡244.900,25

FORMAT no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Há diferentes funções para formatar valores de data e inteiros em JavaScript. Infelizmente, essas funcionalidades não estão integradas em um único método.

Valores DateTime

Sintaxe

 Intl.DateTimeFormat( format ).format( value )
Copy
Argumentos

locales (Opcional): Expressão de cadeia de caracteres do formato a ser aplicado.

options (Opcional): Objeto com diferentes propriedades compatíveis para formatos de expressões numéricas (Documentação da função JavaScript NumberFormat).

value: Expressão numérica a ser formatada.

Tipo de retorno

String.

Valores Numeric

Sintaxe

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

locales (Opcional): Expressão de cadeia de caracteres do formato a ser aplicado.

options (Opcional): Objeto com diferentes propriedades compatíveis para formatos de expressões numéricas (Documentação da função JavaScript NumberFormat).

value: Expressão numérica a ser formatada.

Tipo de retorno

String.

Exemplos

DateTime

Consulta
 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
Resultado
  GREAT_BRITAIN|      
---------------|
     24/01/2022|  
Copy

Numérico

Consulta
 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
Resultado
       CURRENCY|      
---------------|
 244.900,25 CRC|  
Copy

PATINDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna a posição inicial da primeira ocorrência de um padrão em uma expressão especificada (PATINDEX no Transact-SQL).

Amostra de padrão de origem

Sintaxe

PATINDEX( pattern, expression )
Copy

Argumentos

pattern: Padrão a encontrar.

expression: Expressão a ser pesquisada.

Tipo de retorno

Inteiro. Retorna 0 se o padrão não for encontrado.

Exemplos

Consulta

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

Resultado

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

search no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Localiza o índice de um padrão usando REGEX (Documentação da função JavaScript search).

Amostra de padrão de origem

Sintaxe

 String.search( regex )
Copy
Argumentos

regex: Expressão regular que corresponde ao padrão desejado.

Tipo de retorno

Inteiro. Se o padrão não corresponder a nenhuma parte da cadeia de caracteres, retornará -1.

Exemplos

Consulta

 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
Resultado
    PATINDEX|      
------------|
          10|  
Copy

STR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna dados de caracteres convertidos de dados numéricos. Os dados de caracteres são justificados à direita, com um comprimento e uma precisão decimal especificados. (STR no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server

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

Argumentos

numeric_expression: Expressão flutuante com um ponto decimal.

length (Opcional): Comprimento que a expressão retornada terá, incluindo notação de ponto, partes decimais e flutuantes.

decimal(opcional): É o número de casas à direita do ponto decimal.

Tipo de retorno

VARCHAR.

Exemplos

SQL Server

Entrada:

/* 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

Saída:

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

Snowflake SQL

Entrada:

/* 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

Saída:

1) 124

2) ##

3) 123
4) 123.5
Copy

STR no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Infelizmente, essa funcionalidade não está disponível no JS, mas pode ser implementada facilmente usando as funções predefinidas para cadeia de caracteres.

Amostra de padrão de origem

Exemplo de implementação

 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
Argumentos

number: Expressão flutuante com um ponto decimal.

max_length: Comprimento que a expressão retornada terá, incluindo notação de ponto, partes decimais e flutuantes.

float_precision: É o número de casas à direita do ponto decimal.

Tipo de retorno

Cadeia de caracteres.

Exemplos

Consulta

 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
Resultado
           STR|
--------------|
  12345.674000| 
Copy

LTRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna uma expressão de caractere depois de remover os espaços em branco à esquerda (LTRIM no Transact-SQL).

Amostra de padrão de origem

Sintaxe

LTRIM( string_expression )
Copy

Argumentos

string_expression: Expressões de cadeia de caracteres a serem convertidas.

Tipo de retorno

VARCHAR ou NVARCHAR

Exemplos

Consulta

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

Resultado

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

LTRIM no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Infelizmente, essa função não está disponível no JavaScript, mas pode ser implementada usando expressões regulares.

Amostra de padrão de origem

Exemplo de implementação

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

string: Expressão de cadeia de caracteres para remover espaços em branco.

Tipo de retorno

Cadeia de caracteres.

Exemplos

Consulta

 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
Resultado
                 LTRIM|      
----------------------|
FIRST TWO BLANK SPACES|  
Copy

Funções de classificação

Esta seção descreve os equivalentes funcionais das funções de classificação no Transact-SQL para o código do Snowflake SQL e JavaScript, orientados para seu uso em procedimentos armazenados do SnowFlake.

DENSE_RANK

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Essa função retorna a classificação de cada linha em uma partição de conjunto de resultados, sem lacunas nos valores de classificação. A classificação de uma linha específica é um mais o número de valores de classificação distintos que vêm antes dessa linha específica. (DENSE_RANK no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do 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

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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 relacionados

  • SSC-EWI-0001: Token não reconhecido na linha do código-fonte.

RANK

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna a classificação de cada linha dentro da partição de um conjunto de resultados. A classificação de uma linha é um mais o número de classificações que vêm antes da linha em questão. (RANK no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
 RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )  
Copy
Snowflake SQL

Documentação do 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

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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 relacionados

  • SSC-EWI-0001: Token não reconhecido na linha do código-fonte.

ROW_NUMBER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Numera a saída de um conjunto de resultados. Mais especificamente, retorna o número sequencial de uma linha em uma partição de um conjunto de resultados, começando em 1 para a primeira linha em cada partição. (ROW_NUMBER no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação completa do 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

Exemplos

SQL Server

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

Saída:

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

Saída:

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 relacionados

  • SSC-EWI-0001: Token não reconhecido na linha do código-fonte.

Funções lógicas

Esta seção descreve os equivalentes funcionais das funções lógicas no Transact-SQL para código Snowflake SQL e JavaScript, orientados ao seu uso em procedimentos armazenados no SnowFlake.

IIF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um de dois valores, dependendo do fato de a expressão booliana ser avaliada como verdadeira ou falsa. (IIF no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
IIF( boolean_expression, true_value, false_value )
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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

Funções XML

Esta seção descreve a tradução de funções XML do Transact-SQL para Snowflake SQL.

Consulta

Applies to
  • SQL Server

Aviso

Essa transformação será realizada no futuro

Descrição

Especifica um XQuery em relação a uma instância do tipo de dados xml. O resultado é do tipo xml. O método retorna uma instância de XML não tipado. (Query() no Transact-SQL)

Amostra de padrões de origem

O exemplo a seguir detalha a transformação de .query( )

SQL Server

Entrada
 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
Saída
 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
Entrada
 CREATE OR REPLACE TABLE xml_demo (
    object_col VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XML DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "07/11/2025",  "domain": "no-domain-provided" }}'
;

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

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

SELECT
    XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Warranty') as Warranty,
    XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Maintenance') as Maintenance
from
    xml_demo;
Copy
Saída
 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

Problemas conhecidos

Não foram encontrados problemas.

EWIs relacionados

  1. SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.

Valor

Applies to
  • SQL Server

Aviso

Essa transformação será realizada no futuro

Descrição

Executa um XQuery em relação ao XML e retorna um valor do tipo SQL. Esse método retorna um valor escalar. (value() no Transact-SQL).

Amostra de padrões de origem

O exemplo a seguir detalha a transformação de .value( )

SQL Server

Entrada
 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
Saída
 ID | ProductName | Warranty               |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |
Copy
Snowflake SQL
Entrada
 CREATE OR REPLACE TABLE xml_demo (
    object_col VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XML DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "07/11/2025",  "domain": "no-domain-provided" }}'
;

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

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

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

Problemas conhecidos

Não foram encontrados problemas.

EWIs relacionados

  1. SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.

Funções de agregação

Esta seção descreve os equivalentes funcionais das funções de agregação no Transact-SQL para código Snowflake SQL e JavaScript, orientados para a criação de UDFs no Snowflake.

COUNT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Essa função retorna o número de itens encontrados em um grupo. COUNT funciona como a função COUNT_BIG. Essas funções diferem apenas nos tipos de dados de seus valores de retorno. COUNT sempre retorna um valor de tipo de dados int. COUNT_BIG sempre retorna um valor de tipo de dados bigint. (COUNT no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

TOTAL

290

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

Resultado:

TOTAL

290

COUNT_BIG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Essa função retorna o número de itens encontrados em um grupo. COUNT_BIG opera como a função COUNT. Essas funções diferem apenas nos tipos de dados de seus valores de retorno. COUNT_BIG sempre retorna um valor de tipo de dados bigint. COUNT sempre retorna um valor de tipo de dados int. (COUNT_BIG no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

TOTAL

290

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

Resultado:

TOTAL

290

SUM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Retorna a soma de todos os valores, ou somente os valores DISTINCT, na expressão. SUM pode ser usado somente com colunas numéricas. Os valores nulos são ignorados. (SUM no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

SUM( [ DISTINCT ] <expr1> )
Copy

Exemplos

SQL Server

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

Resultado:

TOTALVACATIONHOURS

14678

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

Resultado:

TOTALVACATIONHOURS

14678

UDFs personalizadas do SnowConvert AI

Descrição

Algumas funções ou comportamentos do Transact-SQL podem não estar disponíveis ou podem se comportar de forma diferente no Snowflake. Para minimizar essas diferenças, algumas funções são substituídas por UDFs personalizadas do SnowConvert AI.

Esses UDFs são criados automaticamente durante a migração, na pasta UDF Helper, dentro da pasta Output. Há um arquivo por UDF personalizado.

OPENXML UDF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Esse UDF personalizado é adicionado para processar uma visualização de conjunto de linhas em um documento XML. Isso seria usado para declarações, pois funciona como um provedor de conjunto de linhas.

Parâmetros opcionais e diferentes tipos de nós não são compatíveis com esta versão de UDF. O nó de elemento é processado por padrão.

Sobrecargas personalizadas de UDF

Parâmetros

  1. XML: Um VARCHAR que representa o conteúdo legível do XML.

  2. PATH: Um varchar que contém o padrão dos nós a serem processados como linhas.

UDF

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


CREATE OR REPLACE FUNCTION XML_JSON_SIMPLE(XML VARIANT)
RETURNS OBJECT
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
function toNormalJSON(xmlJSON) {
    var finalres = {};
    var name=xmlJSON['@'];
    var res = {};
    finalres[name] = res;
    for(var key in xmlJSON)
    {
        if (key == "@")
        {
            res["$name"] = xmlJSON["@"];
        }
        else if (key == "$") {
            continue;
        }
        else if (key.startsWith("@"))
        {
            // This is an attribute
            res[key]=xmlJSON[key];
        }
        else
        {
            var elements = xmlJSON['$']
            var value = xmlJSON[key];
            res[key] = [];
            if (Array.isArray(value))
            {
                for(var elementKey in value)
                {
                    var currentElement = elements[elementKey];
                    var fixedElement = toNormalJSON(currentElement);
                    res[key].push(fixedElement);
                }
            }
            else if (value === 0)
            {
                var fixedElement = toNormalJSON(elements);
                res[key].push(fixedElement);
            }
        }
    }
    return finalres;
}
return toNormalJSON(XML);
$$;
Copy
Transact-SQL
Consulta
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
Resultado
CustomerID  | ContactName
----------------------------|
VINET     | Paul Henriot
LILAS     | Carlos Gonzlez
Copy
Snowflake

Nota

O exemplo a seguir é isolado em um procedimento armazenado porque as variáveis de ambiente suportam apenas 256 bytes de armazenamento e o código de demonstração XML usa mais do que esse limite.

Consulta
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
Resultado

CustomerID

ContactName

VINET

Paul Henriot

LILAS

Carlos Gonzlez

Consulta
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
Resultado

CustomerID

ContactName

VINET

Paul Henriot

Problemas conhecidos

Não foram encontrados problemas.

EWIs relacionados

  1. SSC-EWI-TS0075: Procedimento incorporado não suportado.

STR UDF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Esse UDF personalizados converte dados numéricos em dados de caracteres.

Sobrecargas personalizadas de UDF

Parâmetros

  1. FLOAT_EXPR: Uma expressão numérica a ser convertida em varchar.

  2. FORMAT: Uma expressão varchar com o comprimento e o número de casas decimais do varchar resultante. Esse formato é gerado automaticamente no SnowConvert.

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

CREATE OR REPLACE FUNCTION PUBLIC.STR_UDF(FLOAT_EXPR FLOAT)
RETURNS VARCHAR
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
    STR_UDF(FLOAT_EXPR, '999999999999999999')
$$;
Copy
Transact-SQL
Consulta
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
Resultado

A

B

C

D

124

**

123

123,5

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

SWITCHOFFSET_UDF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Esse UDF personalizado é adicionado para retornar um valor datetimeoffset que é alterado do deslocamento de fuso horário armazenado para um novo deslocamento de fuso horário especificado.

Sobrecargas personalizadas de UDF

Parâmetros

  1. source_timestamp: Um TIMESTAMP_TZ que pode ser resolvido para um valor datetimeoffset(n).

  2. target_tz: Um varchar que representa o deslocamento do fuso horário

UDF

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

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

fr_time

cr_time

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

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

Funções de metadados

Esta seção descreve os equivalentes funcionais das funções de metadados no Transact-SQL para código Snowflake SQL e JavaScript, orientados ao seu uso em procedimentos armazenados no SnowFlake.

DB_NAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna o nome de um banco de dados especificado.(DB_NAME no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
 DB_NAME ( [ database_id ] )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

Exemplos

SQL Server

SELECT DB_NAME();
Copy

Resultado:

RESULT

ADVENTUREWORKS2019

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

Resultado:

RESULT

ADVENTUREWORKS2019

Problemas conhecidos

1. A função CURRENT_DATABASE tem um comportamento diferente em determinados casos

A função DB_NAME pode ser chamada com o parâmetro database_id, que retorna o nome do banco de dados especificado. Sem parâmetros, a função retorna o nome do banco de dados atual. No entanto, o SnowFlake não é compatível com esse parâmetro e a função CURRENT_DATABASE sempre retornará o nome do banco de dados atual.

EWIs relacionados

  1. SSC-FDM-TS0010: A função CURRENT_DATABASE tem comportamento diferente em determinados casos.

OBJECT_ID

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna o número de identificação do objeto do banco de dados de um objeto com escopo de esquema.(OBJECT_ID no Transact-SQL).

Sintaxe do SQL Server

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

Amostra de padrões da origem

1. Default transformation

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

2. Unknown database

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

3. Different object names

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

Problemas conhecidos

1. A função OBJECT_ID_UDF tem um comportamento diferente em determinados casos

OBJECT_ID retorna o número de identificação do objeto, mas OBJECT_ID_UDF retorna um valor booliano, de modo que eles são equivalentes somente quando OBJECT_ID é usado com a condição not null.

EWIs relacionados

Funções analíticas

Esta seção descreve os equivalentes funcionais das funções analíticas no Transact-SQL para código Snowflake SQL e JavaScript, orientados para a criação de UDFs no Snowflake.

LAG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Acessa dados de uma linha anterior no mesmo conjunto de resultados sem usar uma autojunção começando com SQL Server 2012 (11.x). LAG fornece acesso a uma linha em um determinado offset físico que vem antes da linha atual. Use esta função analítica em uma instrução SELECT para comparar os valores da linha atual com os valores de uma linha anterior. (COUNT no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

PREVIOUS

ACTUAL

NULL

10

10

89

89

10

10

48

48

0

0

95

95

55

55

67

67

84

84

85

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

Resultado:

PREVIOUS

ACTUAL

NULL

10

10

89

89

10

10

48

48

0

0

95

95

55

55

67

67

84

84

85

Funções de tipo de dados

Esta seção descreve os equivalentes funcionais das funções de tipo de dados no Transact-SQL para código Snowflake SQL e JavaScript.

DATALENGTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna o número de bytes usados para representar qualquer expressão. (DATALENGTH no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
DATALENGTH ( expression )   
Copy
Snowflake SQL

Documentação do Snowflake SQL

OCTET_LENGTH(<string_or_binary>)
Copy

Exemplos

SQL Server

SELECT DATALENGTH('SomeString') AS SIZE;
Copy

Resultado:

SIZE

10

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

Resultado:

SIZE

10

Funções matemáticas

Esta seção descreve os equivalentes funcionais das funções matemáticas no Transact-SQL para código Snowflake SQL e JavaScript, orientados ao seu uso em procedimentos armazenados no SnowFlake.

ABS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Uma função matemática que retorna o valor absoluto (positivo) da expressão numérica especificada. (ABS altera valores negativos para valores positivos. ABS não tem efeito sobre valores zero ou positivos) (ABS no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
ABS( expression )
Copy
Snowflake SQL

Documentação do Snowflake SQL

ABS( <num_expr> )
Copy
JavaScript

Documentação completa do JavaScript

Math.abs( expression )
Copy

Exemplos

SQL Server

SELECT ABS(-5);
Copy

Resultado:

ABS(-5)

5

Snowflake SQL
SELECT ABS(-5);
Copy

Resultado:

ABS(-5)

5

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

Resultado:

COMPUTE_ABS(-5)

5

AVG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Nota

A seção de código do auxiliar de SnowConvert AI é omitida.

Essa função retorna a média dos valores em um grupo. Ela ignora valores nulos. (AVG no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

AVG( [ DISTINCT ] <expr1> )

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

Exemplos

SQL Server

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

Resultado:

AVG_VACATIONS

50

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

Resultado:

AVG_VACATIONS

50

CEILING

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Uma função matemática que retorna o menor número inteiro maior/igual ao número enviado como parâmetro (CEILING no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Exemplos

SQL Server

SELECT CEILING(642.20);
Copy

Resultado:

CEILING(642.20)

643

Snowflake SQL
SELECT CEIL(642.20);
Copy

Resultado:

CEIL(642.20)

643

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

Resultado:

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

FLOOR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o maior número inteiro menor ou igual à expressão numérica especificada. (FLOOR no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
FLOOR ( numeric_expression )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

Exemplos

SQL Server

SELECT FLOOR (124.87) AS FLOOR;
Copy

Resultado:

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

Resultado:

FLOOR|
-----|
  124|
Copy

POWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o valor da expressão especificada para a potência especificada. (POWER no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
POWER ( float_expression , y )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

POW(x, y)

POWER (x, y)
Copy

Exemplos

SQL Server

SELECT POWER(2, 10.0) AS IntegerResult
Copy

Resultado:

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

Resultado:

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

Documentação relacionada

ROUND

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um valor numérico, arredondado para o comprimento ou precisão especificados. (ROUND no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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

Documentação relacionada

SQRT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna a raiz quadrada do valor de float especificado. (SQRT no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
SQRT ( float_expression )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

SQRT(expr)
Copy

Exemplos

SQL Server

SELECT SQRT(25) AS RESULT;
Copy

Resultado:

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

Resultado:

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

SQUARE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o quadrado do valor float especificado. (SQUARE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
SQUARE ( float_expression )  ****
Copy
Snowflake SQL

Documentação do Snowflake SQL

SQUARE(expr)
Copy

Exemplos

SQL Server

SELECT SQUARE (5) AS SQUARE;
Copy

Resultado:

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

Resultado:

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

STDEV

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Retorna o desvio padrão estatístico de todos os valores na expressão especificada. (STDEV no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

 STDDEV( [ DISTINCT ] <expression_1> )
Copy

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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

STDEVP

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Retorna o desvio padrão estatístico da população para todos os valores na expressão especificada. (STDVEP no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

STDDEV_POP( [ DISTINCT ] expression_1)
Copy

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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

VAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Descrição

Retorna a variância estatística de todos os valores na expressão especificada. (VAR no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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

POWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o valor da expressão especificada para uma potência específica.\ (POWER no Transact-SQL).

Amostra de padrão de origem

Sintaxe

POWER( base, exp )
Copy

Argumentos

base: Base do número, deve ser uma expressão float.\ exp: Potência à qual você eleva a base.

Tipo de retorno

O tipo de retorno depende da expressão de entrada:

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

Exemplos

Consulta

SELECT POWER(2, 3)
Copy

Resultado

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

POW no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna a base da potência do expoente.\ (Documentação da função JavaScript POW).

Amostra de padrão de origem

Sintaxe

 Math.pow( base, exp )
Copy
Argumentos

base: Base do número, deve ser uma expressão float.\ exp: Potência à qual você eleva a base.

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.

Exemplos

Consulta

 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
Resultado
COMPUTE_POW(2, 3)|
-----------------|
                8|
Copy

ACOS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o arco-seno em radianos do número enviado como parâmetro (ACOS no Transact-SQL).

Matematicamente, o arco-seno é a função inversa do cosseno, resultando na seguinte definição:\ $$y = cos^{-1} \Leftrightarrow x = cos(y)$$

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

Amostra de padrão de origem

Sintaxe

ACOS ( expression )
Copy

Argumentos

expressão: Expressão de float numérico, em que a expressão está em $$[-1,1]$$.

Tipo de retorno

Expressão numérica de flutuação entre 0 e π. Se a expressão numérica enviada pelo parâmetro estiver fora do domínio $$[-1, 1]$$, o mecanismo de banco de dados emitirá um erro.

Exemplos

Consulta

SELECT ACOS(-1.0);
Copy

Resultado

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

ACOS no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o arco-seno de um número especificado\ (Documentação da função JavaScript ACOS).

Amostra de padrão de origem

Sintaxe

 Math.acos( expression )
Copy
Argumentos

expression: Expressão numérica, em que a expressão está em $$[-1,1]$$.

Tipo de retorno

Expressão numérica entre 0 e π. Se a expressão numérica enviada pelo parâmetro estiver fora do intervalo do arco-seno em radianos $$[-1, 1]$$, a função retornará NaN.

Exemplos

Consulta

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

ASIN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o arco-seno em radianos do número enviado como parâmetro (ASIN no Transact-SQL).

O arco-seno é a função inversa do seno, resumida na definição a seguir:\ $$y = sin^{-1} \Leftrightarrow x = sin(x)$$

Para $$y = sin^{-1}(x)$$:\ - Range: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ ou $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$\ - Domain: $$-1\leqslant x \leqslant 1$$

Amostra de padrão de origem

Sintaxe

ASIN( expression )
Copy

Argumentos

expressão: Expressão de float numérico, em que a expressão está em $$[-1,1]$$.

Tipo de retorno

Expressão numérica flutuante entre $$-\frac{\pi}{2}$$ e $$\frac{\pi}{2}$$. Se a expressão numérica enviada pelo parâmetro não estiver em $$[-1, 1]$$, o mecanismo de banco de dados emitirá um erro.

Exemplos

Consulta

SELECT ASIN(0.5);
Copy

Resultado

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

ASIN no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o arco-seno de um número especificado\ (Documentação da função JavaScript ASIN).

Amostra de padrão de origem

Sintaxe

 Math.asin( expression )
Copy
Argumentos

expression: Expressão numérica, em que a expressão está em $$[-1,1]$$.

Tipo de retorno

Expressão numérica entre $$-\frac{\pi}{2}$$ e $$\frac{\pi}{2}$$. Se a expressão numérica enviada pelo parâmetro estiver fora do domínio do arco-seno $$[-1, 1]$$, a função retornará NaN.

Exemplos

Consulta

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

COS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o cosseno do ângulo enviado por meio de parâmetros (deve ser medido em radianos) (COS no Transact-SQL).

O cosseno é definido como:\ $$y = cos(x)$$\ Onde:\ - Range: $$-1\leqslant y \leqslant 1$$\ - Domain: $$\mathbb{R}$$

Amostra de padrão de origem

Sintaxe

COS( expression )
Copy

Argumentos

expression: Expressão numérica float, em que a expressão está em $$\mathbb{R}$$.

Tipo de retorno

Expressão numérica flutuante em $$[-1, 1]$$.

Exemplos

Consulta

SELECT COS(PI())
Copy

Resultado

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

COS no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função estática que retorna o cosseno de um ângulo em radianos\ (Documentação da funçãoJavaScript COS).

Amostra de padrão de origem

Sintaxe

 Math.cos( expression )
Copy
Argumentos

expression: Expressões numéricas.

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.

Exemplos

Consulta

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

COT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna a cotangente do ângulo em radianos enviada por meio de parâmetros (COT no Transact-SQL).

O cosseno é definido como:\ $$cot(x) = \frac{cos(x)}{sin(x)}$$ ou $$cot(x) = \frac{1}{tan(x)}$$\ Para calcular o cosseno, o parâmetro deve estar em conformidade com as restrições das funções seno e cosseno.

Amostra de padrão de origem

Sintaxe

COT( expression )
Copy

Argumentos

expression: Expressão numérica float, em que a expressão está em $$\mathbb{R}-{sin(expression)=0 \wedge tan(expression) =0}$$.

Tipo de retorno

Expressão numérica de float em $$\mathbb{R}$$.

Exemplos

Consulta

SELECT COT(1)
Copy

Resultado

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

COT no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Infelizmente, o objeto Mathno JavaScript não fornece um método para calcular a cotangente de um determinado ângulo.\ Isso poderia ser calculado usando a equação: $$cot(x) = \frac{cos(x)}{sin(x)}$$

Amostra de padrão de origem

Exemplo de implementação

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

angle: Expressão numérica em radianos.

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.

Exemplos

Consulta

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
Resultado
COMPUTE_COT(1);   |
------------------|
0.6420926159343308|
Copy

RADIANS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Converte graus em radianos.\ (RADIANS no Transact-SQL).

Amostra de padrão de origem

Sintaxe

RADIANS( expression )
Copy

Argumentos

expression: Expressão numérica em graus.

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica em radianos.

Exemplos

Consulta

SELECT RADIANS(180.0)
Copy

Resultado

RADIANS(180)

3.141592653589793116

Nota

Converta o parâmetro dessa função em float, caso contrário, a instrução acima retornará 3 em vez do valor PI.

RADIANS no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

O JavaScript não fornece um método para converter graus em radianos de um determinado ângulo.\ Isso pode ser calculado usando a equação: $$Radians = \frac{\pi}{180^{\circ}} \cdot angle$$

Amostra de padrão de origem

Exemplo de implementação

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

angle: Expressão flutuante em graus.

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica em radianos.

Exemplos

Consulta

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
Resultado

RADIANS(180)

3.141592654

PI

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o valor constante de PI\ (PI no Transact-SQL).

Amostra de padrão de origem

Sintaxe

PI( )
Copy

Argumentos

Esse método não recebe nenhum parâmetro.

Tipo de retorno

Float.

Exemplos

Consulta

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

EXEC CIRCUMFERENCE @radius = 2;
Copy

Resultado

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

PI no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Constante que representa o número PI (aproximadamente 3,141592…)\ (Documentação do JavaScript PI).

Amostra de padrão de origem

Sintaxe

 Math.PI
Copy

Exemplos

Consulta

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
Resultado
  CIRCUMFERENCE(2)|
------------------|
12.566370614359172|
Copy

DEGREES

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Converte o ângulo em radianos enviado por meio de parâmetros para graus (DEGREES no Transact-SQL).

Amostra de padrão de origem

Sintaxe

DEGREES( expression )
Copy

Argumentos

expression: Expressão float numérico em radianos.

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.

Exemplos

Consulta

SELECT DEGREES(PI())
Copy

Resultado

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

DEGREES no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

O JavaScript não fornece um método para converter radianos em graus de um determinado ângulo.\ Isso pode ser calculado usando a equação: $$Degrees = \frac{180^{\circ}}{\pi} \cdot angle$$

Amostra de padrão de origem

Exemplo de implementação

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

angle: Expressão numérica em radianos.

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.

Exemplos

Consulta

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
Resultado
COMPUTE_DEGREES(PI())|
---------------------|
                180.0|
Copy

LOG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o logaritmo natural de um número\ (LOG no Transact-SQL).

Amostra de padrão de origem

Sintaxe

LOG( expression [, base ] )
Copy

Argumentos

expression: Expressão numérica.

base (opcional): Base para calcular o logaritmo de um número; por padrão, é Euler.

Tipo de retorno

Float.

Exemplos

Consulta

SELECT LOG(8, 2)
Copy

Resultado

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

LOG no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o logaritmo usando o número de Euler como base. (Documentação da função JavaScript LOG).

Aviso

Infelizmente, o JavaScript não oferece um método que receba uma base de logaritmo por meio de seus parâmetros, mas isso pode ser resolvido dividindo a base pelo argumento.

Amostra de padrão de origem

Sintaxe

 Math.log( expression )
Copy
Argumentos

expression: Expressão numérica. Deve ser positivo, caso contrário, retorna NaN.\

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.

Exemplos

Consulta

 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
Resultado
BASE_LOG(2, 8)|
--------------|
             3|
Copy

ATAN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o arco-tangente em radianos do número enviado como parâmetro (ATAN no Transact-SQL).

O arco-tangente é a função inversa da tangente, resumida na definição a seguir:\ $$y = arctan^{-1} \Leftrightarrow x = tan(x)$$

Para $$y = tan^{-1}(x)$$:\ - Range: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ ou $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$\ - Domain: $$\mathbb{R}$$

Amostra de padrão de origem

Sintaxe

ATAN( expression )
Copy

Argumentos

expression: Expressão float numérica, ou um tipo numérico que pode ser convertido em float.

Tipo de retorno

Expressão numérica flutuante entre $$-\frac{\pi}{2}$$ e $$\frac{\pi}{2}$$.

Exemplos

Consulta

SELECT ATAN(-30);
Copy

Resultado

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

ATAN no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o arco-tangente de um número especificado\ (Documentação da função JavaScript ATAN).

Amostra de padrão de origem

Sintaxe

 Math.atan( expression )
Copy
Argumentos

expression: Expressão numérica.

Tipo de retorno

Expressão numérica entre $$-\frac{\pi}{2}$$ e $$\frac{\pi}{2}$$.

Exemplos

Consulta

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

ATN2

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o arco-tangente em radianos de duas coordenadas enviadas como parâmetro (ATN2 no Transact-SQL).

Para $$z = tan^{-1}(x, y)$$:\ - Range: $$-\pi\leqslant z \leqslant \pi$$ ou $$-180^{\circ}\leqslant z \leqslant 180^{\circ}$$\ - Domain: $$\mathbb{R}$$

Amostra de padrão de origem

Sintaxe

ATN2( expression_1, expression_2 )
Copy

Argumentos

expression1e expression2: Expressões numéricas.

Tipo de retorno

Expressão numérica entre $$-\pi$$ e $$\pi$$.

Exemplos

Consulta

SELECT ATN2(7.5, 2);
Copy

Resultado

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

ATAN2 no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Função que retorna o arco-tangente de dois parâmetros\ (Documentação da função JavaScript ATAN2).

Amostra de padrão de origem

Sintaxe

 Math.atan2( expression_1, expression_2 )
Copy
Argumentos

expression_1e expression_2: Expressões numéricas.

Tipo de retorno

Expressão numérica entre $$-\pi$$ e $$\pi$$.

Exemplos

Consulta

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
Resultado
ATAN2(7.5, 3)     |
------------------|
       1.310193935|
Copy

LOG10

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o logaritmo de base 10 de um número\ (LOG10 no Transact-SQL).

Amostra de padrão de origem

Sintaxe

LOG10( expression )
Copy

Argumentos

expression: Expressão numérica, deve ser positiva.

Tipo de retorno

Float.

Exemplos

Consulta

SELECT LOG10(5)
Copy

Resultado

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

LOG10 no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o logaritmo de base 10 de um número\ (Documentação da função JavaScript LOG10).

Amostra de padrão de origem

Sintaxe

 Math.log10( expression )
Copy
Argumentos

expression: Expressão numérica. Deve ser positivo, caso contrário, retorna NaN.\

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.

Exemplos

Consulta

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

EXP

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o valor exponencial de Euler (EXP no Transact-SQL).

Amostra de padrão de origem

Sintaxe

EXP( expression )
Copy

Argumentos

expression: Expressão numérica.

Tipo de retorno

O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.

Exemplos

Consulta

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

Resultado

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

EXP no JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Constante que representa o número de Euler (aproximadamente 2,718…)\ (Documentação do número de Euler no JavaScript) \ O JavaScript permite fazer diferentes operações usando essa constante, em vez do Transact-SQL, que suporta apenas o exponencial de Euler.

Amostra de padrão de origem

Sintaxe

 Math.E
Copy

Exemplos

Consulta

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
Resultado
COMPUTE_EXP(LOG(20))|LOG(COMPUTE_EXP(20))|
--------------------|--------------------|
                20.0|                20.0|
Copy

Funções de conversão

Esta seção descreve os equivalentes funcionais das funções de data e hora no Transact-SQL para código Snowflake SQL.

CONVERT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Converte uma expressão de um tipo de dados em outro. (CONVERT no Transact-SQL).

Amostra de padrão de origem

Sintaxe

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

Documentação do Snowflake SQL

CAST( <source_expr> AS <target_data_type> )
Copy

Exemplos

SQL Server

SELECT CONVERT(INT, '1998') as MyDate
Copy
Resultado

MyDate

1998

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

MYDATE

1998

Converter o tipo de data em varchar
SQL Server
SELECT CONVERT(varchar, getdate(), 1) AS RESULT;
Copy
Resultado

RESULT

12/08/22

Snowflake SQL
SELECT
TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy') AS RESULT;
Copy
Resultado

RESULT

12/08/22

Converter o tipo de data em varchar com tamanho
SQL Server
SELECT CONVERT(varchar(2), getdate(), 1) AS RESULT;
Copy
Resultado

RESULT

07

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

RESULT

07

Os formatos suportados para conversões de datas são:

Formatos de data

Código

Formato

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

Formatos de hora

Código

Formato

8

hh:mm:ss

14

hh:mm:ss:ff3

24

hh:mm:ss

108

hh:mm:ss

114

hh:mm:ss:ff3

Formatos de data e hora

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

Datas do calendário islâmico

Código

Formato

130

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

131

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

Se não houver correspondência de padrão com o código atual, ele será formatado para yyyy-mm-dd hh:mm:ss

TRY_CONVERT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um valor convertido para o tipo de dados especificado se a conversão for bem-sucedida; caso contrário, retorna nulo.

(Referência da linguagem SQL Server TRY_CONVERT)

Sintaxe

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

Padrões de origem

Transformação básica

Para transformar essa função, primeiro temos que verificar os parâmetros de TRY_CONVERT.

TRY_CONVERT( INT, 'test')
Copy

Se a expressão que precisa ser convertida for uma cadeia de caracteres, ela será transformada em TRY_CAST, que é uma função do Snowflake.

TRY_CAST( 'test' AS INT)
Copy

TRY_CAST

TRY_CAST compartilha a mesma transformação com TRY_CONVERT.

Exemplo
Servidor Sql
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

O resultado será o mesmo do exemplo de TRY_CONVERT.

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

Problemas conhecidos

Se o tipo de dados for Varchar ou Char, ele será transformado de forma diferente.

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

Se TRY_CAST for usado com VARCHAR ou CHAR no Snowflake, isso causará um erro e, portanto, será transformado em

TO_VARCHAR(1234);
TO_CHAR(1);
Copy

O mesmo acontece com os tipos de dados de SQL_VARIANT e GEOGRAPHY.

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

São transformados em

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

Se a expressão não for uma cadeia de caracteres, há uma grande chance de falha, pois TRY_CAST do Snowflake funciona somente com expressões de cadeia de caracteres.

Nesse caso, será feita outra transformação

TRY_CAST(14.85 AS INT)
Copy

Será transformado em

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

Agora, com essas transformações, pode haver problemas dependendo do que está sendo feito com as funções. TRY_CONVERT de SqlServer retorna nulos se a conversão não for possível.

Isso pode ser usado para fazer a seguinte lógica

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

Esse tipo de condição com TRY_CONVERT pode ser usado com TRY_CAST, mas o que acontece se ele for transformado em TO_VARCHAR, TOCHAR ou no CAST? Se a conversão nessas funções falhar, ela causará um erro em vez de simplesmente retornar nulo.

Exemplos

Neste exemplo, temos vários TRY_CONVERT com diferentes tipos de dados

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

Se migrarmos essa seleção, obteremos o seguinte resultado

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

Vamos executar cada uma delas e comparar o resultado.

Alias

Resultado do SqlServer

Resultado do 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 relacionados

  1. SSC-FDM-TS0005: TRY_CONVERT/TRY_CAST não pôde ser convertido em TRY_CAST.

Funções de data e hora

Esta seção descreve os equivalentes funcionais das funções de data e hora no Transact-SQL para código Snowflake SQL e JavaScript.

AT TIME ZONE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Converte um inputdate para o valor datetimeoffset correspondente no fuso horário de destino. (AT TIME ZONE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
inputdate AT TIME ZONE timezone
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
Copy

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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

Resultado:

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

Resultado:

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

Problemas conhecidos

  1. O Snowflake não oferece suporte a todos os fusos horários que o SQL Server oferece. Você pode verificar os fusos horários compatíveis neste link.

SQL Server

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

Resultado:

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

EWIs relacionados

  1. SSC-FDM-TS0024: CURRENT_TIMESTAMP na instrução At Time Zone pode ter um comportamento diferente em determinados casos.

  2. SSC-EWI-TS0063: O fuso horário não é compatível com o Snowflake.

DATEADD

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna um número inteiro que representa datepart da data especificada. (DATEPART no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
DATEADD (datepart , number , date )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

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

Resultado:

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

DATEDIFF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Esta função retorna a contagem (como um valor inteiro assinado) dos limites de datepart especificado cruzados entre a data de início e a data de término especificadas. (DATEDIFF no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
DATEDIFF ( datepart , startdate , enddate )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

DIFF

1

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

Resultado:

DIFF

1

DATEFROMPARTS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna um valor date que mapeia os valores especificados de ano, mês e dia.(DATEFROMPARTS no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
DATEFROMPARTS ( year, month, day )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

Exemplos

SQL Server

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

Resultado:

RESULT

2022-12-12

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

Resultado:

RESULT

2022-12-12

DATENAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna uma cadeia de caracteres de número que representa datepart da data especificada. (DATENAME no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
DATENAME ( datepart , date )  
Copy
Snowflake SQL

Nota

Essa transformação usa várias funções, dependendo das entradas

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

Exemplos

SQL Server

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

Resultado:

DATE1

DATE2

DATE3

Maio

3

Terça-feira

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

Resultado:

DATE1

DATE2

DATE3

Maio

Ter

Ter

DATEPART

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna um número inteiro que representa datepart da data especificada. (DATEPART no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
DATEPART ( datepart , date )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

DATE_PART( <date_or_time_part> , <date_or_time_expr> )
Copy

Exemplos

SQL Server

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

Resultado:

YEAR

2022

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

Resultado:

YEAR

2022

DAY

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna um número inteiro que representa o dia (dia do mês) da data especificada. (DAY no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
DAY ( date )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

DAY( <date_or_timestamp_expr> )
Copy

Exemplos

SQL Server

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

Resultado:

DAY

10

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

Resultado:

DAY

10

EOMONTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Essa função retorna o último dia do mês que contém uma data especificada, com um deslocamento opcional. (EOMONTH no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
EOMONTH ( start_date [, month_to_add ] )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

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

Exemplos

SQL Server

SELECT EOMONTH (GETDATE()) AS Result; 
Copy

Resultado:

RESULT

2022-05-31

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

Resultado:

RESULT

2022-05-31

GETDATE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna o carimbo de data/hora atual do sistema do banco de dados como um valor datetime sem o deslocamento do fuso horário do banco de dados. (GETDATE no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
GETDATE() 
Copy
Snowflake SQL

Documentação do Snowflake SQL

CURRENT_TIMESTAMP( [ <fract_sec_precision> ] )
Copy

Exemplos

SQL Server

SELECT GETDATE() AS DATE;
Copy

Resultado:

DATE

2022-05-06 09:54:42.757

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

Resultado:

DATE

2022-05-06 08:55:05.422

MONTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um número inteiro que representa o mês da data especificada. (MONTH no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
MONTH( date )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

MONTH ( <date_or_timestamp_expr> )
Copy

Exemplos

SQL Server

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

Resultado:

MONTH

10

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

Resultado:

MONTH

10

SWITCHOFFSET

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

O SWITCHOFFSET ajusta um determinado valor de carimbo de data/hora a um deslocamento de fuso horário específico. Isso é feito por meio de valores numéricos. Mais informações podem ser encontradas em SWITCHOFFSET (Transact-SQL).

Amostra de padrão de origem

Sintaxe

Um auxiliar UDF realiza a equivalência funcional e também compartilha a mesma sintaxe da função SWITCHOFFSET do SQLServer.

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

Exemplo

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

Resultado:

fr_time

cr_time

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

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

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

Resultado:

fr_time

cr_time

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

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

SYSDATETIME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um valor datetime2(7) que contém a data e a hora do computador no qual a instância do SQL Server está sendo executada. (SYSDATETIME no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
SYSDATETIME ( )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

LOCALTIME()
Copy

Exemplos

SQL Server

SELECT SYSDATETIME ( ) AS SYSTEM_DATETIME;
Copy

Resultado:

SYSTEM_DATETIME

2022-05-06 12:08:05.501

Snowflake SQL
SELECT LOCALTIME ( ) AS SYSTEM_DATETIME;
Copy

Resultado:

SYSTEM_DATETIME

211:09:14

SYSUTCDATETIME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um valor datetime2(7) que contém a data e a hora do computador no qual a instância do SQL Server está sendo executada. (SYSUTCDATETIME no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
SYSUTCDATETIME ( )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

SYSDATE()
Copy

Exemplos

SQL Server

SELECT SYSUTCDATETIME() as SYS_UTC_DATETIME;
Copy

Resultado:

SYSTEM_UTC_DATETIME

2023-02-02 20:59:28.0926502

Snowflake SQL
SELECT
SYSDATE() as SYS_UTC_DATETIME;
Copy

Resultado:

SYSTEM_UTC_DATETIME

2023-02-02 21:02:05.557

YEAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Descrição

Retorna um número inteiro que representa o ano da data especificada. (YEAR no Transact-SQL).

Amostra de padrão de origem

Sintaxe

SQL Server
YEAR( date )  
Copy
Snowflake SQL

Documentação do Snowflake SQL

YEAR ( <date_or_timestamp_expr> )
Copy

Exemplos

SQL Server

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

Resultado:

YEAR

2022

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

Resultado:

YEAR

2022