SnowConvert AI - Serveur SQL-Azure Synapse - Fonctions intégrées

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Pour plus d’informations sur les fonctions intégrées et leurs équivalents Snowflake, consultez également les fonctions intégrées courantes.

Agrégat

TransactSQL

Snowflake

Remarques

TransactSQL

Snowflake

Remarques

APPROX_COUNT_DISTINCT

APPROX_COUNT_DISTINCT

AVG​

AVG

CHECKSUM_AGG

*à définir

COUNT

COUNT

COUNT_BIG

*à définir

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​

Analytique

TransactSQL

Snowflake

Remarques

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

Classement

TransactSQL

Snowflake

Remarques

COLLATIONPROPERTY

*à définir

TERTIARY_WEIGHTS

*à définir

Configuration

TransactSQL

Snowflake

Remarques

​@@DBTS

*à définir

@@LANGID

*à définir

@@LANGUAGE

*à définir

@@LOCK_TIMEOUT

*à définir

@@MAX_CONNECTIONS

*à définir

@@MAX_PRECISION

*à définir

@@NESTLEVEL

*à définir

@@OPTIONS

*à définir

@@REMSERVER

*à définir

@@SERVERNAME

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

@@SERVICENAME

*à définir

@@SPID

*à définir

@@TEXTSIZE

*à définir

@@VERSION

*à définir

Peut être imité avec CURRENT_VERSION

Conversion

TransactSQL

Snowflake

Remarques

CAST

CAST

<p>Renvoie NULL si la valeur n’est pas un nombre, sinon renvoie la valeur numérique telle quelle. <br>Lors de l’utilisation d’opérateurs tels que &#x3C ;, >, =, &#x3C ;> alors doit être suivi d’un NULL</p>

CONVERT

Voir CONVERT

Même comportement que CAST

PARSE

*à définir

TRY_CAST

TRY_CAST

<p>Renvoie NULL si la valeur n’est pas un nombre, sinon renvoie la valeur numérique telle quelle. <br>Lors de l’utilisation d’opérateurs tels que &#x3C ;, >, =, &#x3C ;> alors doit être suivi d’un NULL</p>

TRY_CONVERT

*à définir

Même comportement que TRY_CAST

TRY_PARSE

TRY_CAST

Le comportement peut être différent lorsqu’un entier est analysé comme une date ou un horodatage.

Cryptographique

TransactSQL

Snowflake

Remarques

ASYMKEY_ID

*à définir

ASYMKEYPROPERTY

*à définir

CERTENCODED

*à définir

CERTPRIVATEKEY

*à définir

DECRYPTBYASYMKEY

*à définir

DECRYPTBYCERT

*à définir

DECRYPTBYKEY

*à définir

DECRYPTBYKEYAUTOASYMKEY

*à définir

DECRYPTBYKEYAUTOCERT

*à définir

DECRYPTBYPASSPHRASE

_*à définir_​

Peut être imité avec DENCRYPT_RAW

ENCRYPTBYASYMKEY

*à définir

ENCRYPTBYCERT

*à définir

ENCRYPTBYKEY

*à définir

ENCRYPTBYPASSPHRASE

*à définir

Peut être imité avec ENCRYPT_RAW

HASHBYTES

MD5, SHA1, SHA2

<p>Actuellement, seul le hachage séparé est pris en charge. Utilisez le hachage approprié en fonction de l’algorithme requis</p><p><strong>MD5</strong> est un 32 caractères codé en hexadécimal</p><p><strong>SHA1</strong> possède une chaîne de 40 caractères codée en hexadécimal contenant le </p><p><strong>SHA2</strong> 160 bits, une chaîne codée en hexadécimal contenant le résumé de message SHA-2 N-bit. Les tailles sont :</p><p>224 = SHA-224</p><p>256 = SHA-256 (par défaut)</p><p>384 = SHA-384</p><p>512 = SHA-512</p>

IS_OBJECTSIGNED

*à définir

KEY_GUID

*à définir

KEY_ID

*à définir

KEY_NAME

*à définir

SIGNBYASYMKEY

*à définir

SIGNBYCERT

*à définir

SYMKEYPROPERTY

*à définir

VERIGYSIGNEDBYCERT

*à définir

Curseur

TransactSQL

Snowflake

Remarques

@@CURSOR_ROWS

*à définir

@@FETCH_STATUS

*à définir

CURSOR_STATUS

*à définir

Type de données

TransactSQL

Snowflake

Remarques

DATALENGTH

OCTET_LENGTH

​Snowflake n’utilise pas d’octets fractionnés, la longueur est donc toujours calculée comme 8 * OCTET_LENGTH

IDENT_SEED

*à définir

IDENT_CURRENT

*à définir

IDENTITY

*à définir

IDENT_INCR

*à définir

SQL_VARIANT_PROPERTY

*à définir

Date & Heure

TransactSQL

Snowflake

Remarques

@@DATEFIRST

*à définir

@@LANGUAGE

*à définir

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

CURRENT_TIMEZONE

*à définir

DATEADD

DATEADD

DATEDIFF

DATEDIFF

DATEDIFF_BIG

*à définir

DATEFROMPARTS

DATE_FROM_PARTS

DATENAME

*à définir

<p>Cette fonction reçoit deux arguments : une partie de date et une date. Elle renvoie une chaîne. Voici les parties de date prises en charge à partir de TSQL vers 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 »), bien que fournissant uniquement un nom de mois en anglais à trois lettres<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 »), bien que fournissant uniquement un nom de jour en anglais à trois lettres<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> -> nécessite une implémentation spéciale pour obtenir le décalage temporel</p>

DATEPART

DATE_PART

DATETIME2FROMPARTS

*à définir

DATETIMEFROMPARTS

*à définir

​Peut être imité en utilisant une combinaison de DATE_FROM_PARTS et TIME_FROM_PARTS

DATETIMEOFFSETFROMPARTS

*à définir

DAY

DAY

EOMONTH

*à définir

Peut être imité avec LAST_DAY

GETDATE

GETDATE

GETUTCDATE

*à définir

Peut être imité avec CONVERT_TIMEZONE

ISDATE

*à définir

<p>Peut être imité en utilisant <strong>TRY_TO_DATE</strong></p><p>Renvoie NULL si la valeur n’est pas une <strong>Date</strong>, sinon renvoie la valeur de date telle quelle.<br>Lorsque vous utilisez des opérateurs tels que #x3C;, >, =, #x3C;> alors doit être suivi d’un NULL</p>

MONTH

MONTH

SMALLDATETIMEFROMPARTS

*à définir

​​Peut être imité en utilisant une combinaison de DATE_FROM_PARTS et TIME_FROM_PARTS

SWITCHOFFSET

*à définir

​Peut être imité avec CONVERT_TIMEZONE

SYSDATETIME

LOCALTIME

SYSDATETIMEOFFSET

*à définir

​Peut être imité en utilisant CONVERT_TIMEZONE et LOCALTIME

SYSUTCDATETIME

*à définir

​​Peut être imité en utilisant CONVERT_TIMEZONE et LOCALTIME

TIMEFROMPARTS

TIME_FROM_PARTS

TODATETIMEOFFSET

*à définir

​Peut être imité avec CONVERT_TIMEZONE

YEAR

YEAR

JSON

TransactSQL

Snowflake

Remarques

ISJSON

CHECK_JSON

​Il s’agit d’une fonction d’aperçu dans Snowflake

JSON_VALUE

*à définir

<p>Peut être imité en utilisant</p><p>TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))</p>

JSON_QUERY

*à définir

JSON_MODIFY

*à définir

Mathématique

TransactSQL

Snowflake

Remarques

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

Logique

TransactSQL

Snowflake

Remarques

CHOOSE

*à définir

Peut être imité avec DECODE

GREATEST

GREATEST

IIF

IIF

LEAST

LEAST

NULLIF

NULLIF

Métadonnées

TransactSQL

Snowflake

Remarques

TransactSQL

Snowflake

Remarques

@@PROCID

*à définir

APP_NAME

*à définir

APPLOCK_MODE

*à définir

APPLOCK_TEST

*à définir

ASSEMBLYPROPERTY

*à définir

COL_LENGTH

Une UDF nommée COL_LENGTH_UDF est fournie pour récupérer ces informations. Cette UDF fonctionne uniquement avec les types VARCHAR, comme spécifié dans la documentation Transact-SQL. Pour les autres types de données, il renvoie NULL.

COL_NAME

*à définir

COLUMNPROPERTY

*à définir

DATABASE_PRINCIPAL_ID

*à définir

Correspond à CURRENT_USER lorsqu’il n’y a pas d’arguments

DATABASEPROPERTYEX

*à définir

DB_ID

*à définir

Nous vous recommandons un remplacement par CURRENT_DATABASE(). S’il est nécessaire d’émuler cette fonctionnalité.
SELECT DATE_PART(EPOCH,CREATED) FROM INFORMATION_SCHEMA.DATABASES WHERE DATABASE_NAME = “DB” ;
Peut réaliser quelque chose de similaire

DB_NAME

*à définir

Principalement utilisé dans le nom de procédure mentionné ci-dessus

FILE_ID

*à définir

FILE_IDEX

*à définir

FILE_NAME

*à définir

FILEGROUP_ID

*à définir

FILEGROUP_NAME

*à définir

FILEGROUPPROPERTY

*à définir

FILEPROPERTY

*à définir

FULLTEXTCATALOGPROPERTY

*à définir

FULLTEXTSERVICEPROPERTY

*à définir

INDEX_COL

*à définir

INDEXKEY_PROPERTY

*à définir

INDEXPROPERTY

*à définir

NEXT VALUE FOR

*à définir

OBJECT_DEFINITION

*à définir

OBJECT_ID

*à définir

Dans la plupart des cas, peut être remplacé. La plupart des cas se présentent comme suit : IF OBJECT_ID(“dbo.TABLE”) IS NOT NULL DROP TABLE dbo.Table qui peut être remplacée par une DROP TABLE IF EXISTS (cette syntaxe est également prise en charge dans SQL SERVER). Si objet_id doit être répliqué, une UDF est ajoutée en fonction du deuxième paramètre de l’appel de fonction.

OBJECT_NAME

*à définir

Peut être remplacé par : 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”

Cette transformation ne se produit que lorsqu’elle se trouve à l’intérieur d’une DeclareStatement.

ObjectName est le nom du TopLevelObject qui contient la fonction.

OBJECT_SCHEMA_NAME

*à définir

OBJECT_SCHEMA_NAME(@@PROCID)

:OBJECT_SCHEMA_NAME

Cette transformation ne se produit que lorsqu’elle se trouve à l’intérieur d’une DeclareStatement.

OBJECTPROPERTY

*à définir

OBJECTPROPERTYEX

*à définir

ORIGINAL_DB_NAME

*à définir

PARSENAME

PARSENAME_UDF

Crée une UDF pour émuler le même comportement que celui de la fonction Parsename.

*à définir

SCHEMA_NAME

*à définir

SCOPE_IDENTITY

*à définir

Si cela est nécessaire, je recommanderais d’utiliser des séquences et de capturer la valeur avant l’insertion

SERVERPROPERTY

*à définir

STATS_DATE

*à définir

TYPE_ID

*à définir

TYPE_NAME

*à définir

TYPEPROPERTY

*à définir

VERSION

*à définir

Classement

TransactSQL

Snowflake

Remarques

DENSE_RANK

DENSE_RANK

NTILE

NTILE

RANK

RANK

ROW_NUMBER

ROW_NUMBER

Réplication

TransactSQL

Snowflake

Remarques

PUBLISHINGSERVERNAME

*à définir

Ensemble de lignes

TransactSQL

Snowflake

Remarques

OPENDATASOURCE

*à définir

OPENJSON

*à définir

QPENQUERY

*à définir

OPENROWSET

*à définir

OPENXML

OPENXML_UDF

Fonction définie par l’utilisateur utilisée comme comportement équivalent dans Snowflake.

STRING_SPLIT

SPLIT_TO_TABLE

L’indicateur enable_ordinal dans STRING_SPLIT de Transact-SQL n’est pas directement pris en charge par la fonction SPLIT_TO_TABLE de Snowflake. Si la colonne ordinale est nécessaire, une fonction définie par l’utilisateur (UDF) nommée STRING_SPLIT_UDF sera générée pour répliquer ce comportement. Sans la colonne ordinale, notez que STRING_SPLIT renvoie une seule colonne nommée valeur, tandis que SPLIT_TO_TABLE renvoie trois colonnes : valeur, index (équivalent à l’ordinal) et seq. Pour plus de détails, voir la documentation SPLIT_TO_TABLE.

Sécurité

TransactSQL

Snowflake

Remarques

CERTENCODED

*à définir

CERTPRIVATEKEY

*à définir

CURRENT_USER

CURRENT_USER

DATABASE_PRINCIPAL_ID

*à définir

HAS_PERMS_BY_NAME

*à définir

IS_MEMBER

*à définir

Passer à la requête INFORMATION_SCHEMA bien que le client puisse avoir besoin de définir de nouveaux rôles

IS_ROLEMEMBER

*à définir

<p>Fonction similaire de Snowflake</p><p><strong>IS_ROLE_IN_SESSION</strong></p>

IS_SRVROLEMEMBER

*à définir

LOGINPROPERTY

*à définir

ORIGINAL_LOGIN

*à définir

PERMISSIONS

*à définir

PWDCOMPARE

*à définir

PWDENCRYPT

*à définir

SCHEMA_ID

*à définir

SCHEMA_NAME

*à définir

SESSION_USER

*à définir

SUSER_ID

*à définir

SUSER_NAME

*à définir

SUSER_SID

*à définir

SUSER_SNAME

*à définir

sys.fn_builtin_permissions

*à définir

sys.fn_get_audit_file

*à définir

sys.fn_my_permissions

*à définir

SYSTEM_USER

*à définir

USER_ID

*à définir

USER_NAME

*à définir

Mappage avec CURRENT_USER

Chaîne

TransactSQL

Snowflake

Remarques

ASCII

ASCII

CHAR

CHR, CHAR

CHARINDEX

CHARINDEX

CONCAT

CONCAT

CONCAT_WS

CONCAT_WS

COALESCE

COALESCE

DIFFERENCE

*à définir

FORMAT

TO_CHAR

Le SSC-EWI-0006 ou SSC-FDM-0036 peut être généré lorsque le format (numérique ou date-heure) n’est pas entièrement pris en charge.

LEFT

LEFT

LEN

LEN

LOWER

LOWER

LTRIM

LTRIM

NCHAR

*à définir

PATINDEX

*à définir

Mappage avec REGEXP_INSTR

QUOTENAME

QUOTENAME_UDF

Crée une UDF pour émuler le même comportement que la fonction Quotename

REPLACE

REPLACE

REPLICATE

REPEAT

REVERSE

REVERSE

RIGHT

RIGHT

RTRIM

RTRIM

SOUNDEX

SOUNDEX

SPACE

*à définir

STR

*à définir

STRING_AGG

*à définir

STRING_ESCAPE

*à définir

STRING_SPLIT

SPLIT_TO_TABLE

STUFF

*à définir

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

Système

TransactSQL

Snowflake

Remarques

$PARTITION

*à définir

@@ERROR

*à définir

@@IDENTITY

*à définir

Si cela est nécessaire, je recommanderais d’utiliser des séquences et de capturer la valeur avant l’insertion

@@PACK_RECEIVED

*à définir

@@ROWCOUNT

*à définir

@@TRANCOUNT

*à définir

BINARY_CHECKSUM

*à définir

CHECKSUM

*à définir

COMPRESS

COMPRESS

<p>​La version de Snowflake possède un argument de méthode pour indiquer la méthode de compression. Voici les valeurs valides : <strong>SNAPPY, ZLIB, ZSTD, BZ2</strong></p><p>Le niveau de compression est spécifié entre parenthèses et doit être un nombre entier non négatif</p>

CONNECTIONPROPERTY

*à définir

CONTEXT_INFO

*à définir

CURRENT_REQUEST_ID

*à définir

CURRENT_TRANSACTION_ID

*à définir

DECOMPRESS

*à définir

Snowflake dispose de deux fonctions pour cela : DECOMPRESS_BINARY et DECOMPRESS_STRING

ERROR_LINE

*à définir

<p>SnowScript : Non pris en charge dans Snowflake avec **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> <p>JavaScript: Sera mappé sur l’aide **ERROR\_LINE**. L’aide EXEC capturera la propriété de la ligne d’exception à partir de la trace de la pile. </p>

ERROR_MESSAGE

SQLERRM

Ajout de SSC-FDM-TS0023Le message d’erreur renvoyé peut être différent dans Snowflake.

ERROR_NUMBER

*à définir

<p>SnowScript : Non pris en charge dans Snowflake avec **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> <p>JavaScript: Sera mappé sur l’aide **ERROR\_NUMBER**. L’aide EXEC capturera la propriété du code d’exception.</p>

ERROR_PROCEDURE

Mappé

<p>SnowScript : Utilisez le nom de la procédure actuelle, ajout de **SSC-FDM-TS0023** La valeur de résultat est basée sur la procédure stockée où la fonction est appelée au lieu de l’endroit où l’exception se produit.</p> <p>JavaScript : Sera mappé sur l’aide **ERROR\_PROCEDURE**, tiré de la propriété de procédure `arguments.callee.name`</p>

ERROR_SEVERITY

*à définir

<p>SnowScript : Non pris en charge dans Snowflake avec **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p>

ERROR_STATE

SQLSTATE

<p>SnowScript : Converti en propriété **SQLSTATE**Snowflake, ajout de **SSC-FDM-TS0023**La valeur renvoyée peut être différente dans Snowflake.</p> <p>JavaScript : L’aide capturera la propriété de l’état Exception </p>

FORMATMESSAGE

FORMATEMESSAGE_UDF

Crée une UDF pour émuler le même comportement que la fonction FORMATMESSAGE, mais avec certaines limites.

GET_FILESTREAM_TRANSACTION_CONTEXT

*à définir

GETANSINULL

*à définir

HOST_ID

*à définir

HOST_NAME

*à définir

ISNULL

NVL

ISNUMERIC

*à définir

Il n’y a pas d’équivalent direct, mais peut être mappé à une UDF personnalisée, renvoyant les mêmes valeurs que dans TSQL.

MIN_ACTIVE_ROWVERSION

*à définir

NEWID

*à définir

​Mappage avec UUID_STRING

NEWSEQUENTIALID

*à définir

ROWCOUNT_BIG

*à définir

SESSION_CONTEXT

*à définir

SESSION_ID

*à définir

XACT_STATE

*à définir

Statistique système

TransactSql

Snowflake

Remarques

@@CONNECTIONS

*à définir

<p>​Fonction similaire de Snowflake : <strong>LOGIN_HISTORY.</strong></p><p>Renvoie les événements de connexion dans un intervalle de temps spécifié</p>

@@PACK_RECEIVED

*à définir

@@CPU_BUSY

*à définir

@@PACK_SENT

*à définir

@@TIMETICKS

*à définir

@@IDLE

*à définir

@@TOTAL_ERRORS

*à définir

@@IO_BUSY

*à définir

@@TOTAL_READ

*à définir

@@PACKET_ERRORS

*à définir

@@TOTAL_WRITE

*à définir

Texte et image

TransactSQL

Snowflake

Remarques

TEXTPTR

*à définir

TEXTVALID

*à définir

Déclencheur

TransactSQL

Snowflake

Remarques

COLUMNS_UPDATED

*à définir

EVENTDATA

*à définir

TRIGGER_NESTLEVEL

*à définir

UPDATE

*à définir

Fonctions système

Cette section décrit les équivalents fonctionnels des fonctions système dans Transact-SQL vers Snowflake SQL et JavaScript Code, orientés vers la création d’UDFs dans Snowflake

ISNULL

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Remplace NULL par la valeur de remplacement spécifiée. (ISNULL dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
ISNULL ( check_expression , replacement_value )  
Copy
Snowflake SQL

Documentation Snowflake SQL

NVL( <expr1> , <expr2> )
Copy

Exemples

SQL Server

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

Résultat :

COMPANYNAME

SNOWFLAKE

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

Résultat :

COMPANYNAME

SNOWFLAKE

NEWID

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Crée une valeur unique de type uniqueidentifier. (NEWID dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
NEWID ( )  
Copy
Snowflake SQL

Documentation Snowflake SQL

UUID_STRING()
Copy

Exemples

Avertissement

Les sorties peuvent être différentes parce qu’il génère un ID unique dans l’environnement d’exécution

SQL Server

SELECT NEWID ( ) AS ID;
Copy

Résultat :

ID

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

Snowflake SQL
SELECT
UUID_STRING( ) AS ID;
Copy

Résultat :

ID

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

NULLIF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une valeur nulle si les deux expressions spécifiées sont égales.

Modèle de source d’échantillon

Syntaxe

SQL Server
NULLIF ( check_expression , replacement_value )  
Copy
Snowflake SQL

Documentation Snowflake SQL

NULLIF( <expr1> , <expr2> )
Copy

Exemples

SQL Server

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

Résultat :

RESULT1

RESULT2

6

null

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

Résultat :

RESULT1

RESULT2

6

null

@@ROWCOUNT

Applies to
  • SQL Server

Description

Renvoie le nombre de lignes affectées par la dernière instruction. (@@ROWCOUNT dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
@@ROWCOUNT
Copy
Snowflake SQL

Documentation Snowflake SQL

SQLROWCOUNT
Copy

Exemples

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

Résultat :

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

Résultat :

:ADDCOUNT

3

FORMATMESSAGE

Applies to
  • SQL Server

Description

Construit un message à partir d’un message existant dans sys.messages ou d’une chaîne fournie. (FORMATMESSAGE dans Transact-SQL).

Modèle de source d’échantillon

Snowflake ne prenant pas en charge la fonction FORMATMESSAGE, la fonction FORMATMESSAGE_UDF est ajoutée pour simuler son comportement.

Syntaxe

SQL Server

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

Exemples

SQL Server

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

Résultat :

RESULT

C’est la première variable et c’est la deuxième variable.

Snowflake

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

Résultat :

RESULT

C’est la première variable et c’est la deuxième variable.

FORMATMESSAGE_UDF

Snowflake n’a pas de fonction offrant la fonctionnalité de FORMATMESSAGE. SnowConvert AI génère l’UDF Python suivante pour émuler le comportement 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

Cette UDF peut ne pas fonctionner correctement dans certains cas :

  • L’utilisation du caractère générique %I64d entraîne une erreur.

  • Si le nombre d’arguments de substitution est différent du nombre de caractères de remplacement, une erreur est générée.

  • Certains caractères de remplacement non signés comme %u ou %X ne se comporteront pas correctement lors du formatage de la valeur.

  • Il ne peut pas gérer les _ID de messages.

Fonctions de chaîne

Cette section décrit les équivalents fonctionnels des fonctions de chaîne dans Transact-SQL vers Snowflake SQL et JavaScript Code, orientés vers la création d’UDFs dans Snowflake

CHAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie un caractère d’un octet avec l’entier envoyé en paramètre sur la table ASCII (CHAR dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
CHAR( expression )
Copy
Snowflake SQL

Documentation complète de Snowflake SQL

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

Documentation complète de JavaScript

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

Exemples

SQL Server

SELECT CHAR(170) AS SMALLEST_A
Copy

Sortie :

SMALLEST_A

ª

Snowflake SQL
SELECT
CHAR(170) AS SMALLEST_A;
Copy

Résultat :

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

Résultat :

SMALLEST_A

ª

CHARINDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie l’index de la première occurrence de la valeur spécifiée envoyée en paramètre lorsqu’elle correspond (CHARINDEX dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation complète de Snowflake SQL

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

Documentation complète de JavaScript

String.indexOf( search_value [, index] )
Copy

Exemples

SQL Server

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

Résultat :

INDEX

33

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

Résultat :

INDEX

33

JavaScript

Note

Dans Transact, les index commencent à 1, au lieu de JavaScript qui commence à 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

Résultat :

INDEX

33

COALESCE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Évalue les arguments dans l’ordre et renvoie la valeur actuelle de la première expression qui ne correspond pas initialement à NULL. Par exemple,SELECT COALESCE(NULL, NULL, “third_value”, “fourth_value”) ; renvoie la troisième valeur, car la troisième valeur est la première valeur qui n’est pas nulle. (COALESCE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

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

Résultat :

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

Résultat :

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

Description

Réalise une concaténation de valeurs de chaînes avec d’autres. (CONCAT dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation complète de Snowflake SQL

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

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

Documentation complète de JavaScript

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

Exemples

SQL Server

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

Sortie :

TITLE

Ray of Light

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

Sortie :

TITLE

Ray of Light

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

Sortie :

   TITLE|
Copy

| Ray of Light|

LEFT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la partie droite d’une chaîne de caractères avec le nombre de caractères spécifié. (RIGHT dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
LEFT ( character_expression , integer_expression )  
Copy
Snowflake SQL

Documentation complète de Snowflake SQL

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

Fonction utilisée pour émuler le comportement

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

Exemples

SQL Server

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

Sortie :

FIRST_NAME

John

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

Sortie :

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

Sortie :

FIRST_NAME

John

LEN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la longueur d’une chaîne (LEN dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
LEN( string_expression )
Copy
Snowflake SQL

Documentation complète de Snowflake SQL

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

Documentation complète de JavaScript SQL

 string.length
Copy

Exemples

SQL Server

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

Sortie :

LEN

11

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

Sortie :

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

Sortie :

LEN

11

LOWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Convertit une chaîne en minuscules (LOWER dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
LOWER ( character_expression )  
Copy
Snowflake SQL

Documentation complète de Snowflake SQL

LOWER( <expr> )
Copy
JavaScript

Documentation complète de JavaScript SQL

 String.toLowerCase( )
Copy

Exemples

SQL Server

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

Sortie :

LOWERCASE

you are a prediction of the good ones

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

Sortie :

LOWERCASE

you are a prediction of the good ones

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

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

Sortie :

LOWERCASE

you are a prediction of the good ones

NCHAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le caractère UNICODE d’un entier envoyé en paramètre (NCHAR dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

NCHAR( expression )
Copy
Arguments

expression : Expression entière.

Type de renvoi

Valeur de la chaîne, qui dépend de l’entrée reçue.

Exemples

Requête

SELECT NCHAR(170);
Copy
Résultat

ª

Note

L’équivalence de cette fonction dans JavaScript est documentée dans CHAR.

REPLACE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Remplace toutes les occurrences d’une valeur de chaîne spécifiée par une autre valeur de chaîne. (REPLACE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation complète de Snowflake SQL

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

Exemples

SQL Server

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

Sortie :

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

Sortie :

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

\ Sortie :

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

REPLICATE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Réplique une valeur de chaîne un nombre de fois spécifié (REPLICATE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
REPLICATE( string_expression, number_expression )
Copy
Snowflake SQL

Documentation Snowflake SQL

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

Documentation de JavaScript

String.repeat( number_expression )
Copy

Exemples

SQL Server

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

Résultat :

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

Résultat :

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

Résultat :

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

RTRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une expression de caractère après suppression des espaces initiaux (RTRIM dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
RTRIM( string_expression )
Copy
Snowflake SQL

Documentation complète de Snowflake SQL

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

Fonction personnalisée utilisée pour émuler le comportement

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

Exemples

SQL Server

Entrée :

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

Sortie :

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

Résultat :

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

Résultat :

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

SPACE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie un nombre d’occurrences d’espaces vides (SPACE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
SPACE ( integer_expression )  
Copy
Snowflake SQL

Documentation complète de Snowflake SQL

SPACE(<n>)
Copy
JavaScript

Fonction personnalisée utilisée pour émuler le comportement

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

Exemples

SQL Server

Entrée :

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

Sortie :

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

Entrée :

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

Sortie :

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

Entrée :

 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

Sortie :

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

SUBSTRING

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une expression de caractère après suppression des espaces initiaux (RTRIM dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation complète de Snowflake SQL

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

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

Fonction personnalisée utilisée pour émuler le comportement

 string.substring( indexA [, indexB])
Copy

Exemples

SQL Server

Entrée :

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

Sortie :

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

Résultat :

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

Résultat :

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

UPPER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Convertit une chaîne en majuscules (UPPER dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
UPPER( string_expression ) 
Copy
Snowflake SQL

Documentation complète de Snowflake SQL

UPPER( <expr> )
Copy
JavaScript

Documentation complète de JavaScript SQL

 String.toUpperCase( )
Copy

Exemples

SQL Server

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

Sortie :

+-------------------------------------|
|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

Sortie :

+-------------------------------------|
|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

\ Sortie :

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

ASCII

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le code numérique d’un caractère de la table ASCII (ASCII dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

ASCII( expression )
Copy

Arguments

expression : VARCVHAR ou expression CHAR.

Type de renvoi

INT.

Exemples

Requête

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

Résultat

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

ASCII dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie le code numérique d’un caractère de la table ASCII (documentation de la fonctionJavaScript charCodeAt).

Modèle de source d’échantillon

Syntaxe

 string.charCodeAt( [index] )
Copy
Arguments

index(Facultatif) : Index de la chaîne pour obtenir le caractère et renvoyer son numéro de code dans la table ASCII. Si ce paramètre n’est pas spécifié, la valeur par défaut est 0. \

Type de renvoi

Int.

Exemples

Requête

 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
Résultat
          A|          a|
-----------| ----------|
         65|         97|    
Copy

QUOTENAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une chaîne délimitée par des guillemets (QUOTENAME dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

QUOTENAME( string_expression [, quote_character])
Copy

Arguments

string_expression : Chaîne à délimiter.

quote_character : un caractère pour délimiter la chaîne.

Type de renvoi

NVARCHAR(258). Nulle si la citation est différente de (“), ([]), (« ), ( () ), ( >< ), ({}) or (`).

Exemples

Requête

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

Résultat

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

QUOTENAME dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Malheureusement, cette fonctionnalité n’est pas disponible dans JavaScript, mais elle peut être mise en œuvre à l’aide de fonctions prédéfinies.

Modèle de source d’échantillon

Exemple de mise en œuvre

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

string : Expression de chaîne à délimiter.

quote : Citation à utiliser comme délimiteur.

Type de renvoi

Chaîne.

Exemples

Requête

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
Résultat
    HELLO|      
---------|
  `Hello`| 
Copy

CONCAT_WS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Effectue une concaténation de valeurs de chaînes avec d’autres en utilisant un séparateur entre elles (CONCAT_WS in Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Arguments

separator : Séparateur à joindre.

expression1, ... ,expressionN : Expression à trouver dans une chaîne.

Type de renvoi

Valeur de la chaîne, dépend de l’entrée reçue.

Exemples

Requête

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

Résultat

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

Join dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Concatène les arguments de la chaîne à la chaîne appelante à l’aide d’un séparateur (documentation JavaScript sur la fonction Join).

Modèle de source d’échantillon

Syntaxe

 Array.join( separator )
Copy
Arguments

separator : Caractère à joindre.

Type de renvoi

Chaîne.

Exemples

Requête

 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
Résultat
        NAME|      
------------|
Mariah Carey|   
Copy

SOUNDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie un code à quatre caractères permettant d’évaluer la similarité de deux chaînes (SOUNDEX dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SOUNDEX( string_expression )
Copy

Arguments

string_expression : Expression de chaîne à inverser.

Type de renvoi

Le même type de données que l’expression de la chaîne envoyée en paramètre.

Exemples

Requête

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

Résultat

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

SOUNDEX dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Malheureusement, JavaScript ne fournit pas de méthode permettant d’exécuter l’algorithme SOUNDEX, mais il est possible de l’implémenter manuellement.

Modèle de source d’échantillon

Exemple de mise en œuvre

 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
Arguments

word : expression de la chaîne pour obtenir son équivalence SOUNDEX.

Type de renvoi

Chaîne.

Exemples

Requête

 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
Résultat
      TWO|      TOO|
---------|---------|
     T000|     T000| 
Copy

REVERSE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Inverse une chaîne (REVERSE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

REVERSE( string_expression )
Copy

Arguments

string_expression : Expression de chaîne à inverser.

Type de renvoi

Le même type de données que l’expression de la chaîne envoyée en paramètre.

Exemples

Requête

SELECT REVERSE('rotator') AS PALINDROME;
Copy

Résultat

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

reverse dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Malheureusement, cette fonctionnalité n’est pas disponible dans JavaScript, mais elle peut être mise en œuvre à l’aide de fonctions prédéfinies.

Modèle de source d’échantillon

Exemple de mise en œuvre

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

string : Expression de chaîne à inverser.

Type de renvoi

Chaîne.

Exemples

Requête

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

SELECT REVERSE('rotator') PALINDROME;
Copy
Résultat
      PALINDROME|      
----------------|
         rotator|  
Copy

STRING_ESCAPE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Échappe les caractères spéciaux dans les textes et renvoie le texte avec les caractères échappés. (STRING_ESCAPE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

STRING_ESCAPE( text, type )
Copy

Arguments

text : Texte pour l’échappement des caractères.

type : Format type pour échapper aux caractères. Actuellement, JSON est le seul format pris en charge.

Type de renvoi

VARCHAR.

Exemples

Requête

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

Résultat

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

stringify dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Convertit un objet en un format de chaîne JSON (documentation JavaScript sur la fonction stringify)

Modèle de source d’échantillon

Syntaxe

 JSON.stringify( value )
Copy
Arguments

value : Expression de l’objet à convertir.

Type de renvoi

Chaîne.

Exemples

Requête

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

SELECT STRING_ESCAPE('\   /  \\    "     ') ESCAPE;
Copy
Résultat
                    ESCAPE|
--------------------------|
  \\   \/  \\\\    \"     | 
Copy

TRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une expression de caractères sans espaces vides (TRIM dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

TRIM( string_expression )
Copy

Arguments

string_expression : Expressions de chaînes à convertir.

Type de renvoi

VARCHAR ou NVARCHAR

Exemples

SQL Server

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

Sortie :

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

Snowflake SQL

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

Sortie :

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

trim dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Remplace les occurrences d’un modèle par un nouveau modèle envoyé en paramètre (documentation JavaScript sur la fonction Replace).

Modèle de source d’échantillon

Syntaxe

 String.trim( )
Copy
Arguments

Cette fonction ne reçoit aucun paramètre.

Type de renvoi

Chaîne.

Exemples

Requête

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

DIFFERENCE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie un entier mesurant la différence entre deux chaînes utilisant l’algorithme SOUNDEX (DIFFERENCE in Transact-SQL). \ Compte les caractères communs des chaînes résultant de l’exécution de l’algorithme SOUNDEX.

Modèle de source d’échantillon

Syntaxe

DIFFERENCE( expression1, expression1 )
Copy

Arguments

expression1, expression2 : Expressions de chaînes à comparer.

Type de renvoi

Int.

Exemples

Requête

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

Résultat

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

DIFFERENCE dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Malheureusement, cette fonctionnalité n’est pas disponible dans JS, mais elle peut être facilement mise en œuvre.

Note

Cette fonctionnalité exige l’implémentation de l’algorithme SOUNDEX.

Modèle de source d’échantillon

Exemple de mise en œuvre

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

strA, strB : Expressions de chaînes résultant de l’exécution de l’algorithme SOUNDEX.

Type de renvoi

Chaîne.

Exemples

Requête

 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
Résultat
   DIFFERENCE|
-------------|
            4| 
Copy

FORMAT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une valeur formatée avec le format spécifié et la culture optionnelle (FORMAT dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

FORMAT( value, format [, culture])
Copy

Arguments

value : Expressions de chaînes à donner au format.

format : Format souhaité.

culture (facultatif) : Argument NVarchar spécifiant la culture. S’il n’est pas spécifié, il prend les langues de la session en cours.

Type de renvoi

NULL si le paramètre de culture n’est pas valide, sinon, il suit les types de données suivants :

Catégorie

Type .NET

Numérique

bigint

Int64

Numérique

int

Int32

Numérique

smallint

Int16

Numérique

tinyint

Byte

Numérique

decimal

SqlDecimal

Numérique

numérique

SqlDecimal

Numérique

float

Double

Numérique

real

Single

Numérique

smallmoney

Décimal

Numérique

money

Décimal

Date et heure

date

DateTime

Date et heure

time

TimeSpan

Date et heure

datetime

DateTime

Date et heure

smalldatetime

DateTime

Date et heure

datetime2

DateTime

Date et heure

datetimeoffset

DateTimeOffset

Exemples

Requête

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

Résultat

  GREAT BRITAIN|
---------------|
     24/01/2022|  
Copy
Requête
SELECT FORMAT(244900.25, 'C', 'cr-CR')  AS 'CURRENCY';
Copy
Résultat

CURRENCY

₡244 900,25

FORMAT dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Il existe différentes fonctions permettant de formater les dates et les valeurs entières dans JavaScript. Malheureusement, ces fonctionnalités ne sont pas intégrées dans une seule méthode.

Valeurs DateTime

Syntaxe

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

locales (facultatif) : Expression sous forme de chaîne du format à appliquer.

options (facultatif) : Objet avec différentes propriétés prises en charge pour les formats d’expressions numériques (documentation JavaScript sur la fonction NumberFormat).

value : Expression numérique à formater.

Type de renvoi

Chaîne.

Valeurs numériques

Syntaxe

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

locales (facultatif) : Expression sous forme de chaîne du format à appliquer.

options (facultatif) : Objet avec différentes propriétés prises en charge pour les formats d’expressions numériques (documentation JavaScript sur la fonction NumberFormat).

value : Expression numérique à formater.

Type de renvoi

Chaîne.

Exemples

DateTime

Requête
 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
Résultat
  GREAT_BRITAIN|      
---------------|
     24/01/2022|  
Copy

Numérique

Requête
 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
Résultat
       CURRENCY|      
---------------|
 244.900,25 CRC|  
Copy

PATINDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la position initiale de la première occurrence d’un modèle dans une expression spécifiée (PATINDEX in Transact-SQL).

Modèle de source d’échantillon

Syntaxe

PATINDEX( pattern, expression )
Copy

Arguments

pattern : Modèle à trouver.

expression : Expression à rechercher.

Type de renvoi

Entier. Renvoie 0 si le modèle n’est pas trouvé.

Exemples

Requête

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

Résultat

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

rechercher dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Recherche l’index d’un modèle à l’aide de REGEX (documentation JavaScript sur la fonction de recherche).

Modèle de source d’échantillon

Syntaxe

 String.search( regex )
Copy
Arguments

regex : Expression régulière qui correspond au modèle souhaité.

Type de renvoi

Entier. Si le modèle ne correspond à aucune partie de la chaîne, renvoie -1.

Exemples

Requête

 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
Résultat
    PATINDEX|      
------------|
          10|  
Copy

STR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie des données de caractère converties à partir de données numériques. Les données de caractère sont justifiées à droite, avec une longueur et une précision décimale spécifiées. (STR dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server

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

Arguments

numeric_expression : Expression flottante avec un point décimal.

length (Facultatif) : Longueur de l’expression renvoyée, y compris la notation à points, la partie décimale et la partie flottante.

decimal(Facultatif) : Le nombre de chiffres situés à droite de la virgule décimale.

Type de renvoi

VARCHAR.

Exemples

SQL Server

Entrée :

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

Sortie :

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

Snowflake SQL

Entrée :

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

Sortie :

1) 124

2) ##

3) 123
4) 123.5
Copy

STR dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Malheureusement, cette fonctionnalité n’est pas disponible dans JS, mais elle peut être mise en œuvre facilement en utilisant les fonctions prédéfinies pour les chaînes.

Modèle de source d’échantillon

Exemple de mise en œuvre

 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
Arguments

number : Expression flottante avec un point décimal.

max_length : Longueur de l’expression renvoyée, incluant la notation du point, la partie décimale et les parties flottantes.

float_precision : Nmbre de chiffres à droite de la virgule décimale.

Type de renvoi

Chaîne.

Exemples

Requête

 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
Résultat
           STR|
--------------|
  12345.674000| 
Copy

LTRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une expression de caractère après suppression des espaces initiaux (LTRIM dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

LTRIM( string_expression )
Copy

Arguments

string_expression : Expressions de chaînes à convertir.

Type de renvoi

VARCHAR ou NVARCHAR

Exemples

Requête

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

Résultat

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

LTRIM dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Malheureusement, cette fonction n’est pas disponible dans JavaScript, mais elle peut être mise en œuvre à l’aide d’expressions régulières.

Modèle de source d’échantillon

Exemple de mise en œuvre

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

string : Expression de chaîne pour supprimer les espaces.

Type de renvoi

Chaîne.

Exemples

Requête

 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
Résultat
                 LTRIM|      
----------------------|
FIRST TWO BLANK SPACES|  
Copy

Fonctions de classement

Cette section décrit les équivalents fonctionnels des fonctions de classement dans le code Transact-SQL vers Snowflake SQL et JavaScript, orientés vers leur utilisation dans les procédures stockées de SnowFlake.

DENSE_RANK

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Cette fonction renvoie le rang de chaque ligne dans la partition d’un jeu de résultats, sans discontinuité dans les valeurs de classement. Le rang d’une ligne spécifique est égal à un plus le nombre de valeurs de rang distinctes qui précèdent cette ligne spécifique. (DENSE_RANK dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation 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

Exemples

SQL Server

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

Résultat :

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

Résultat :

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 connexes

  • SSC-EWI-0001 : Jeton non reconnu sur la ligne du code source.

RANK

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le rang de chaque ligne dans la partition d’un jeu de résultats. Le rang d’une ligne est égal à un plus le nombre de rangs qui précèdent la ligne en question. (RANK dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation 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

Exemples

SQL Server

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

Résultat :

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

Résultat :

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 connexes

  • SSC-EWI-0001 : Jeton non reconnu sur la ligne du code source.

ROW_NUMBER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Numérise la sortie d’un jeu de résultats. Plus précisément, renvoie le numéro séquentiel d’une ligne à l’intérieur d’une partition d’un jeu de résultats, en commençant à 1 pour la première ligne de chaque partition. (ROW_NUMBER dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation complète de 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

Exemples

SQL Server

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

Sortie :

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

Sortie :

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 connexes

  • SSC-EWI-0001 : Jeton non reconnu sur la ligne du code source.

Fonctions logiques

Cette section décrit les équivalents fonctionnels des fonctions logiques dans Transact-SQL vers Snowflake SQL et JavaScript Code, orientés vers leur utilisation dans les procédures stockées dans SnowFlake.

IIF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie l’une des deux valeurs, selon que l’expression booléenne est évaluée à true ou false. (IIF dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

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

Résultat :

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

Résultat :

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

Fonctions XML

Cette section décrit la traduction des fonctions XML dans Transact-SQL vers Snowflake SQL.

Requête

Applies to
  • SQL Server

Avertissement

Cette transformation sera proposée prochainement

Description

Spécifie un XQuery par rapport à une instance du type de données xml. Le résultat est de type xml. La méthode renvoie une instance XML non typée (Query() dans Transact-SQL)

Échantillons de modèles de sources

L’exemple suivant détaille la transformation pour .query( )

SQL Serveur

Entrée
 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
Sortie
 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
Entrée
 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
Sortie
 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

Problèmes connus

Aucun problème n’a été constaté.

EWIs connexes

  1. SSC-EWI-0036 : Type de données converti en un autre type de données.

Valeur

Applies to
  • SQL Server

Avertissement

Cette transformation sera proposée prochainement

Description

Effectue un XQuery par rapport à XML et renvoie une valeur de type SQL. Cette méthode renvoie une valeur scalaire. (value() dans Transact-SQL).

Échantillons de modèles de sources

L’exemple suivant détaille la transformation pour .value( )

SQL Serveur

Entrée
 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
Sortie
 ID | ProductName | Warranty               |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |
Copy
Snowflake SQL
Entrée
 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
Sortie
 ID | PRODUCTNAME | WARRANRTY              |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |
Copy

Problèmes connus

Aucun problème n’a été constaté.

EWIs connexes

  1. SSC-EWI-0036 : Type de données converti en un autre type de données.

Fonctions d’agrégation

Cette section décrit les équivalents fonctionnels des fonctions d’agrégation dans Transact-SQL vers Snowflake SQL et JavaScript Code, orientés vers la création d’UDFs dans Snowflake.

COUNT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Cette fonction renvoie le nombre d’éléments trouvés dans un groupe. COUNT opère comme la fonction COUNT_BIG. Ces fonctions ne diffèrent que par le type de données de leurs valeurs de retour. COUNT renvoie toujours une valeur de type données int. COUNT_BIG renvoie toujours une valeur de type données bigint. (COUNT dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

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

Résultat :

TOTAL

290

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

Résultat :

TOTAL

290

COUNT_BIG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Cette fonction renvoie le nombre d’éléments trouvés dans un groupe. La fonction COUNT_BIG fonctionne comme la fonction COUNT. Ces fonctions ne diffèrent que par le type de données de leurs valeurs de retour. COUNT\BIG renvoie toujours une valeur de type données bigint. COUNT renvoie toujours une valeur de type données int. (COUNT_BIG dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

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

Résultat :

TOTAL

290

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

Résultat :

TOTAL

290

SUM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Renvoie la somme de toutes les valeurs, ou seulement les valeurs DISTINCT, de l’expression. SUM ne peut être utilisé qu’avec des colonnes numériques. Les valeurs nulles sont ignorées. (SUM dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

SUM( [ DISTINCT ] <expr1> )
Copy

Exemples

SQL Server

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

Résultat :

TOTALVACATIONHOURS

14678

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

Résultat :

TOTALVACATIONHOURS

14678

SnowConvert AI UDFs personnalisées

Description

Certaines fonctions ou certains comportements Transact-SQL peuvent ne pas être disponibles ou se comporter différemment dans Snowflake. Pour minimiser ces différences, certaines fonctions sont remplacées par des SnowConvert AI UDFs personnalisées.

Ces UDFs sont automatiquement créées lors de la migration, dans le dossier UDF Helper, à l’intérieur du dossier Output. Il y a un fichier par UDF personnalisée.

OPENXML UDF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Cette UDF personnalisée est ajoutée pour traiter une vue rowset sur un document XML. Il est utilisé pour les déclarations, car il fonctionne comme un fournisseur rowset.

Les paramètres facultatifs et les différents types de nœuds ne sont pas pris en charge dans cette version de l’UDF. Le nœud de l’élément est traité par défaut.

Surcharges UDF personnalisées

Paramètres

  1. XML : Un VARCHAR qui représente le contenu lisible du XML.

  2. PATH : Un varchar qui contient le modèle des nœuds à traiter en tant que lignes.

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
Requête
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
Résultat
CustomerID  | ContactName
----------------------------|
VINET     | Paul Henriot
LILAS     | Carlos Gonzlez
Copy
Snowflake

Note

L’exemple suivant est isolé dans une procédure stockée parce que les variables d’environnement ne prennent en charge que 256 octets de stockage et que le code de démonstration XML utilise plus que cette limite.

Requête
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
Résultat

CustomerID

ContactName

VINET

Paul Henriot

LILAS

Carlos Gonzlez

Requête
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
Résultat

CustomerID

ContactName

VINET

Paul Henriot

Problèmes connus

Aucun problème n’a été constaté.

EWIs connexes

  1. SSC-EWI-TS0075 : Procédure intégrée non prise en charge.

STR UDF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette UDF personnalisée convertit les données numériques en données de caractère.

Surcharges UDF personnalisées

Paramètres

  1. FLOAT\EXPR : Une expression numérique à convertir en varchar.

  2. FORMAT : Une expression varchar avec la longueur et le nombre de décimales du varchar résultant. Ce format est généré automatiquement dans 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
Requête
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
Résultat

A

B

C

D

124

**

123

123,5

Snowflake
Requête
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

Description

Cette UDF personnalisée est ajoutée pour renvoyer une valeur datetimeoffset qui passe du décalage de fuseau horaire enregistré à un nouveau décalage de fuseau horaire spécifié.

Surcharges UDF personnalisées

Paramètres

  1. source_timestamp : Un TIMESTAMP\_TZ qui peut être résolu en une valeur datetimeoffset(n).

  2. target_tz : Un varchar qui représente le décalage du fuseau horaire

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
Requête
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
Résultat
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
Requête
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
Résultat

fr_time

cr_time

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

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

Fonctions de métadonnées

Cette section décrit les équivalents fonctionnels des fonctions de métadonnées dans Transact-SQL vers Snowflake SQL et JavaScript Code, orientés vers leur utilisation dans les procédures stockées dans SnowFlake.

DB_NAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie le nom d’une base de données spécifiée.(DB_NAME dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
 DB_NAME ( [ database_id ] )  
Copy
Snowflake SQL

Documentation Snowflake SQL

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

Exemples

SQL Server

SELECT DB_NAME();
Copy

Résultat :

RESULT

ADVENTUREWORKS2019

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

Résultat :

RESULT

ADVENTUREWORKS2019

Problèmes connus

1. La fonction CURRENT_DATABASE a un comportement différent dans certains cas

La fonction DB_NAME peut être invoquée avec le paramètre database_id, qui renvoie le nom de la base de données spécifiée. Sans paramètre, la fonction renvoie le nom de la base de données actuelle. Cependant, SnowFlake ne prend pas en charge ce paramètre et la fonction CURRENT_DATABASE renverra toujours le nom de la base de données actuelle.

EWIs connexes

  1. SSC-FDM-TS0010 : La fonction CURRENT_DATABASE a un comportement différent dans certains cas.

OBJECT_ID

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie le numéro d’identification de l’objet de la base de données d’un objet à portée de schéma.(OBJECT_ID in Transact-SQL).

Syntaxe du serveur SQL

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

Modèles d’échantillons de sources

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

Problèmes connus

1. La fonction OBJECT_ID_UDF a un comportement différent dans certains cas

OBJECT_ID renvoie le numéro d’identification de l’objet mais OBJECT_ID_UDF renvoie une valeur booléenne, de sorte qu’ils ne sont équivalents que lorsque OBJECT_ID est utilisé avec la condition not null.

EWIs connexes

Fonctions analytiques

Cette section décrit les équivalents fonctionnels des fonctions analytiques dans Transact-SQL vers Snowflake SQL et JavaScript Code, orientés vers la création d’UDFs dans Snowflake

LAG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Accède aux données d’une ligne précédente dans le même jeu de résultats sans l’utilisation d’une auto-jointure en commençant par SQL Serveur 2012 (11.x). LAG donne accès à une ligne à un décalage physique donné qui précède la ligne actuelle. Utilisez cette fonction analytique dans une instruction SELECT pour comparer les valeurs de la ligne actuelle avec les valeurs d’une ligne précédente. (COUNT dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

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

Résultat :

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

Résultat :

PREVIOUS

ACTUAL

NULL

10

10

89

89

10

10

48

48

0

0

95

95

55

55

67

67

84

84

85

Fonctions des types de données

Cette section décrit les équivalents fonctionnels des fonctions de type de données dans Transact-SQL vers Snowflake SQL et le code JavaScript.

DATALENGTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie le nombre d’octets utilisés pour représenter une expression quelconque. (DATALENGTH dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
DATALENGTH ( expression )   
Copy
Snowflake SQL

Documentation Snowflake SQL

OCTET_LENGTH(<string_or_binary>)
Copy

Exemples

SQL Server

SELECT DATALENGTH('SomeString') AS SIZE;
Copy

Résultat :

SIZE

10

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

Résultat :

SIZE

10

Fonctions mathématiques

Cette section décrit les équivalents fonctionnels des fonctions mathématiques dans Transact-SQL vers Snowflake SQL et le code JavaScript, orientés vers leur utilisation dans les procédures stockées dans SnowFlake.

ABS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction mathématique qui renvoie la valeur absolue (positive) de l’expression numérique spécifiée. (ABS transforme les valeurs négatives en valeurs positives. ABS n’a aucun effet sur les valeurs nulles ou positives) (ABS dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
ABS( expression )
Copy
Snowflake SQL

Documentation Snowflake SQL

ABS( <num_expr> )
Copy
JavaScript

Documentation complète de JavaScript

Math.abs( expression )
Copy

Exemples

SQL Server

SELECT ABS(-5);
Copy

Résultat :

ABS(-5)

5

Snowflake SQL
SELECT ABS(-5);
Copy

Résultat :

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

Résultat :

COMPUTE_ABS(-5)

5

AVG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Note

La section Code des aides SnowConvert AI est ignorée.

Cette fonction renvoie la moyenne des valeurs d’un groupe. Elle ignore les valeurs nulles. (AVG dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

AVG( [ DISTINCT ] <expr1> )

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

Exemples

SQL Server

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

Résultat :

AVG_VACATIONS

50

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

Résultat :

AVG_VACATIONS

50

CEILING

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Une fonction mathématique qui renvoie le plus petit entier supérieur/égal au nombre envoyé en paramètre (CEILING dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Exemples

SQL Server

SELECT CEILING(642.20);
Copy

Résultat :

CEILING(642.20)

643

Snowflake SQL
SELECT CEIL(642.20);
Copy

Résultat :

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

Résultat :

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

FLOOR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le plus grand entier inférieur ou égal à l’expression numérique spécifiée. (FLOOR dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
FLOOR ( numeric_expression )  
Copy
Snowflake SQL

Documentation Snowflake SQL

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

Exemples

SQL Server

SELECT FLOOR (124.87) AS FLOOR;
Copy

Résultat :

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

Résultat :

FLOOR|
-----|
  124|
Copy

POWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la valeur de l’expression spécifiée à la puissance spécifiée. (POWER dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
POWER ( float_expression , y )  
Copy
Snowflake SQL

Documentation Snowflake SQL

POW(x, y)

POWER (x, y)
Copy

Exemples

SQL Server

SELECT POWER(2, 10.0) AS IntegerResult
Copy

Résultat :

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

Résultat :

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

Documentation Connexe

ROUND

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une valeur numérique, arrondie à la longueur ou à la précision spécifiée. (ROUND dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

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

Résultat :

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

Résultat :

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

Documentation Connexe

SQRT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la racine carrée de la valeur flottante spécifiée. (SQRT dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
SQRT ( float_expression )  
Copy
Snowflake SQL

Documentation Snowflake SQL

SQRT(expr)
Copy

Exemples

SQL Server

SELECT SQRT(25) AS RESULT;
Copy

Résultat :

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

Résultat :

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

SQUARE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le carré de la valeur flottante spécifiée. (SQUARE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

SQUARE(expr)
Copy

Exemples

SQL Server

SELECT SQUARE (5) AS SQUARE;
Copy

Résultat :

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

Résultat :

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

STDEV

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Renvoie l’écart-type statistique de toutes les valeurs de l’expression spécifiée. (STDEV dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

 STDDEV( [ DISTINCT ] <expression_1> )
Copy

Exemples

SQL Server

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

Résultat :

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

Résultat :

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

STDEVP

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Renvoie l’écart-type statistique de la population pour toutes les valeurs de l’expression spécifiée. (STDVEP dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

STDDEV_POP( [ DISTINCT ] expression_1)
Copy

Exemples

SQL Server

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

Résultat :

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

Résultat :

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

VAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Note

Certaines parties du code de sortie sont omises pour des raisons de clarté.

Description

Renvoie la variance statistique de toutes les valeurs de l’expression spécifiée. (VAR dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Exemples

SQL Server

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

Résultat :

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

Résultat :

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

POWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la valeur de l’expression spécifiée pour une puissance donnée.\ (POWER dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

POWER( base, exp )
Copy

Arguments

base : Base d’un nombre, il doit s’agir d’une expression flottante.\ exp : Puissance à laquelle on élève la base.

Type de renvoi

Le type de retour dépend de l’expression d’entrée :

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

Exemples

Requête

SELECT POWER(2, 3)
Copy

Résultat

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

POW dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la base de la puissance de l’exposant.\ (documentation sur la fonction JavaScript POW).

Modèle de source d’échantillon

Syntaxe

 Math.pow( base, exp )
Copy
Arguments

base : Base d’un nombre, il doit s’agir d’une expression flottante.\ exp : Puissance à laquelle on élève la base.

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique.

Exemples

Requête

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

ACOS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie l’arc cosinus en radians du nombre envoyé en paramètre (ACOS dans Transact-SQL).

Mathématiquement, l’arc cosinus est la fonction inverse du cosinus, ce qui donne la définition suivante :\ $$y = cos^{-1} \Leftrightarrow x = cos(y)$$

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

Modèle de source d’échantillon

Syntaxe

ACOS ( expression )
Copy

Arguments

expression : Expression numérique float, où l’expression est dans$[-1,1]$$.

Type de renvoi

Expression numérique flottante comprise entre 0 et π. Si l’expression numérique envoyée par le paramètre est en dehors du domaine $$[-1, 1]$$, le moteur de la base de données émet une erreur.

Exemples

Requête

SELECT ACOS(-1.0);
Copy

Résultat

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

ACOS dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie l’arc cosinus d’un nombre spécifié\ (documentation sur la fonction JavaScript ACOS).

Modèle de source d’échantillon

Syntaxe

 Math.acos( expression )
Copy
Arguments

expression : Expression numérique, où l’expression est dans$$[-1,1]$$.

Type de renvoi

Expression numérique comprise entre 0 et π. Si l’expression numérique envoyée par le paramètre est hors de l’intervalle de l’arc cosinus en radians $$[-1, 1]$$, la fonction renvoie NaN.

Exemples

Requête

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

ASIN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie l’arc sinus en radians du nombre envoyé en paramètre (ASIN dans Transact-SQL).

L’arc sinus est la fonction inverse du sinus, résumée dans la définition suivante :\ $$y = sin^{-1} \Leftrightarrow x = sin(x)$$

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

Modèle de source d’échantillon

Syntaxe

ASIN( expression )
Copy

Arguments

expression : Expression numérique float, où l’expression est dans$[-1,1]$$.

Type de renvoi

Expression numérique flottante entre $$-\frac{\pi}{2}$$ et $$\frac{\pi}{2}$$. Si l’expression numérique envoyée par le paramètre n’est pas comprise dans $$[-1, 1]$$, le moteur de la base de données émet une erreur.

Exemples

Requête

SELECT ASIN(0.5);
Copy

Résultat

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

ASIN dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie l’arc sinus d’un nombre spécifié\ (documentation sur la fonction JavaScript ASIN).

Modèle de source d’échantillon

Syntaxe

 Math.asin( expression )
Copy
Arguments

expression : Expression numérique, où l’expression est dans$$[-1,1]$$.

Type de renvoi

Expression numérique entre $$-\frac{\pi}{2}$$ et $$\frac{\pi}{2}$$. Si l’expression numérique envoyée en paramètre est hors du domaine de l’arc cosinus $$[-1, 1]$$, la fonction renvoie NaN.

Exemples

Requête

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

COS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie le cosinus de l’angle envoyé par les paramètres (doit être mesuré en radians) (COS dans Transact-SQL).

Le cosinus est défini comme suit : \ $$y = cos(x)$$\ Where:\ - Range: $$-1\leqslant y \leqslant 1$$\ - Domain: $$\mathbb{R}$$

Modèle de source d’échantillon

Syntaxe

COS( expression )
Copy

Arguments

expression : Expression numérique float, où l’expression est dans $$\mathbb{R}$$.

Type de renvoi

Expression numérique flottante dans $$[-1, 1]$$.

Exemples

Requête

SELECT COS(PI())
Copy

Résultat

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

COS dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction statique qui renvoie le cosinus d’un angle en radians\ (documentation sur la fonction JavaScript COS).

Modèle de source d’échantillon

Syntaxe

 Math.cos( expression )
Copy
Arguments

expression : Expressions numériques.

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique.

Exemples

Requête

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

COT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la cotangente de l’angle en radians envoyé par les paramètres (COT dans Transact-SQL).

Le cosinus est défini comme suit : \ $$cot(x) = \frac{cos(x)}{sin(x)}$$ or $$cot(x) = \frac{1}{tan(x)}$$\ Pour calculer le cosinus, le paramètre doit respecter les contraintes des fonctions sinus et cosinus.

Modèle de source d’échantillon

Syntaxe

COT( expression )
Copy

Arguments

expression : Expression numérique float, où l’expression est dans $$\mathbb{R}-{sin(expression)=0 \wedge tan(expression) =0}$$.

Type de renvoi

Expression numérique flottante dans $$\mathbb{R}$$.

Exemples

Requête

SELECT COT(1)
Copy

Résultat

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

COT dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Malheureusement, l’objet Mathdans JavaScript ne fournit pas de méthode pour calculer la cotangente d’un angle donné.\ Cette cotangente pourrait être calculée à l’aide de l’équation : $$cot(x) = \frac{cos(x)}{sin(x)}$$

Modèle de source d’échantillon

Exemple de mise en œuvre

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

angle : Expression numérique en radians.

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique.

Exemples

Requête

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
Résultat
COMPUTE_COT(1);   |
------------------|
0.6420926159343308|
Copy

RADIANS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Convertit les degrés en radians.\ (RADIANS dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

RADIANS( expression )
Copy

Arguments

expression : Expression numérique en degrés.

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique en radians.

Exemples

Requête

SELECT RADIANS(180.0)
Copy

Résultat

RADIANS(180)

3.141592653589793116

Note

Transformez le paramètre de cette fonction en valeur flottante, sinon l’instruction ci-dessus renverra 3 au lieu de la valeur PI.

RADIANS dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

JavaScript ne fournit pas de méthode pour convertir les degrés en radians d’un angle donné.\ Cette conversion peut être calculée à l’aide de l’équation suivante : $$Radians = \frac{\pi}{180^{\circ}} \cdot angle$$

Modèle de source d’échantillon

Exemple de mise en œuvre

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

angle : Expression flottante en degrés.

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique en radians.

Exemples

Requête

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
Résultat

RADIANS(180)

3.141592654

PI

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la valeur constante de PI\ (PI dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

PI( )
Copy

Arguments

Cette méthode ne reçoit aucun paramètre.

Type de renvoi

Float.

Exemples

Requête

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

EXEC CIRCUMFERENCE @radius = 2;
Copy

Résultat

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

PI dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Constante qui représente le nombre PI (environ 3,141592…)\ (documentation sur JavaScript PI).

Modèle de source d’échantillon

Syntaxe

 Math.PI
Copy

Exemples

Requête

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
Résultat
  CIRCUMFERENCE(2)|
------------------|
12.566370614359172|
Copy

DEGREES

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Convertit l’angle en radians envoyé par les paramètres en degrés (DEGREES dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

DEGREES( expression )
Copy

Arguments

expression : Expression numérique float en radians.

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique.

Exemples

Requête

SELECT DEGREES(PI())
Copy

Résultat

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

DEGREES dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

JavaScript ne fournit pas de méthode pour convertir les radians en degrés d’un angle donné.\ Cette conversion peut être calculée à l’aide de l’équation suivante : $$Degrees = \frac{180^{\circ}}{\pi} \cdot angle$$

Modèle de source d’échantillon

Exemple de mise en œuvre

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

angle : Expression numérique en radians.

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique.

Exemples

Requête

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
Résultat
COMPUTE_DEGREES(PI())|
---------------------|
                180.0|
Copy

LOG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le logarithme naturel d’un nombre\ (LOG dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

LOG( expression [, base ] )
Copy

Arguments

expression : Expression numérique.

base (facultatif) : Base pour calculer le logarithme d’un nombre ; Euler par défaut.

Type de renvoi

Float.

Exemples

Requête

SELECT LOG(8, 2)
Copy

Résultat

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

LOG dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le logarithme en utilisant le nombre d’Euler comme base. (documentation sur la fonction JavaScript LOG).

Avertissement

Malheureusement, JavaScript ne fournit pas de méthode qui reçoive une base de logarithme à travers ses paramètres, mais cela peut être résolu en divisant la base par l’argument.

Modèle de source d’échantillon

Syntaxe

 Math.log( expression )
Copy
Arguments

expression : Expression numérique. Il doit être positif, sinon il renvoie NaN. \

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique.

Exemples

Requête

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

ATAN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie l’arc tangente en radians du nombre envoyé en paramètre (ATAN dans Transact-SQL).

L’arc tangente est la fonction inverse de la tangente, résumée dans la définition suivante:\ $$y = arctan^{-1} \Leftrightarrow x = tan(x)$$

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

Modèle de source d’échantillon

Syntaxe

ATAN( expression )
Copy

Arguments

expression : Expression numérique float, ou un type numérique qui pourrait être converti en float.

Type de renvoi

Expression numérique flottante entre $$-\frac{\pi}{2}$$ et $$\frac{\pi}{2}$$.

Exemples

Requête

SELECT ATAN(-30);
Copy

Résultat

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

ATAN dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie l’arc tangente d’un nombre spécifié\ (documentation sur la fonction JavaScript ATAN).

Modèle de source d’échantillon

Syntaxe

 Math.atan( expression )
Copy
Arguments

expression : Expression numérique.

Type de renvoi

Expression numérique entre $$-\frac{\pi}{2}$$ et $$\frac{\pi}{2}$$.

Exemples

Requête

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

ATN2

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie l’arc tangente en radians de deux coordonnées envoyées en paramètre (ATN2 dans Transact-SQL).

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

Modèle de source d’échantillon

Syntaxe

ATN2( expression_1, expression_2 )
Copy

Arguments

expression1et expression2 : Expressions numériques.

Type de renvoi

Expression numérique comprise entre $$-\pi$$ et $$\pi$$.

Exemples

Requête

SELECT ATN2(7.5, 2);
Copy

Résultat

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

ATAN2 dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Fonction qui renvoie l’arc tangente de deux paramètres\ (documentation sur la fonction JavaScript ATAN2).

Modèle de source d’échantillon

Syntaxe

 Math.atan2( expression_1, expression_2 )
Copy
Arguments

expression_1et expression_2 : Expressions numériques.

Type de renvoi

Expression numérique comprise entre $$-\pi$$ et $$\pi$$.

Exemples

Requête

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

LOG10

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le logarithme en base 10 d’un nombre\ (LOG10 dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

LOG10( expression )
Copy

Arguments

expression : Expression numérique, doit être positive.

Type de renvoi

Float.

Exemples

Requête

SELECT LOG10(5)
Copy

Résultat

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

LOG10 dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie le logarithme en base 10 d’un nombre\ (documentation sur la fonction JavaScript LOG10).

Modèle de source d’échantillon

Syntaxe

 Math.log10( expression )
Copy
Arguments

expression : Expression numérique. Il doit être positif, sinon il renvoie NaN. \

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique.

Exemples

Requête

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

EXP

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie la valeur de l’exponentielle d’Euler (EXP dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

EXP( expression )
Copy

Arguments

expression : Expression numérique.

Type de renvoi

Le même type de données est envoyé par le paramètre sous la forme d’une expression numérique.

Exemples

Requête

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

Résultat

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

EXP dans JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Constante qui représente le nombre d’Euler (environ 2,718…)\ (JavaScript, documentation sur le nombre d’Euler). \ JavaScript permet d’effectuer différentes opérations en utilisant cette constante, au lieu de Transact-SQL qui ne prend en charge que l’exponentielle d’Euler.

Modèle de source d’échantillon

Syntaxe

 Math.E
Copy

Exemples

Requête

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
Résultat
COMPUTE_EXP(LOG(20))|LOG(COMPUTE_EXP(20))|
--------------------|--------------------|
                20.0|                20.0|
Copy

Fonctions de conversion

Cette section décrit les équivalents fonctionnels des fonctions de date et d’heure dans Transact-SQL vers le code Snowflake SQL.

CONVERT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Convertir une expression d’un type de données vers un autre. (CONVERT dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

CAST( <source_expr> AS <target_data_type> )
Copy

Exemples

SQL Server

SELECT CONVERT(INT, '1998') as MyDate
Copy
Résultat

MyDate

1998

Snowflake SQL
SELECT
CAST('1998' AS INT) as MyDate;
Copy
Résultat

MYDATE

1998

Conversion du type date en varchar
SQL Server
SELECT CONVERT(varchar, getdate(), 1) AS RESULT;
Copy
Résultat

RESULT

12/08/22

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

RESULT

12/08/22

Conversion du type date en varchar avec taille
SQL Server
SELECT CONVERT(varchar(2), getdate(), 1) AS RESULT;
Copy
Résultat

RESULT

07

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

RESULT

07

Les formats pris en charge pour les enregistrements de dates sont les suivants :

Formats de date

Code

Format

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

Formats d’heure

Code

Format

8

hh:mm:ss

14

hh:mm:ss:ff3

24

hh:mm:ss

108

hh:mm:ss

114

hh:mm:ss:ff3

Date and time formats

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

Dates du calendrier islamique

Code

Format

130

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

131

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

Si aucun modèle ne correspond au code actuel, il sera formaté en yyyy-mm-dd hh:mm:ss

TRY_CONVERT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une valeur convertie dans le type de données spécifié si la conversion est réussie ; sinon, renvoie null.

(Référence linguistique SQL Server TRY_CONVERT)

Syntaxe

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

Modèles de sources

Transformation de base

Afin de transformer cette fonction, nous devons d’abord vérifier les paramètres de TRY_CONVERT.

TRY_CONVERT( INT, 'test')
Copy

Si l’expression à convertir est une chaîne, elle sera transformée en TRY_CAST, qui est une fonction de Snowflake.

TRY_CAST( 'test' AS INT)
Copy

TRY_CAST

TRY_CAST partage la même transformation avec TRY_CONVERT.

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

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

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

Le résultat sera le même avec l’exemple 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

Problèmes connus

Si le type de données est Varchar ou Char, il sera transformé différemment.

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

Si TRY_CAST est utilisé avec VARCHAR ou CHAR dans Snowflake, cela provoquera une erreur, il sera donc transformé en

TO_VARCHAR(1234);
TO_CHAR(1);
Copy

Il en va de même pour les types de données SQL_VARIANT et GEOGRAPHY.

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

Transformés en

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

Si l’expression n’est pas une chaîne, il y a de très fortes chances qu’elle échoue, car TRY_CAST de Snowflake ne fonctionne qu’avec des expressions de type chaîne.

Dans ce cas, une autre transformation sera effectuée

TRY_CAST(14.85 AS INT)
Copy

Sera transformé en

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

Maintenant, avec ces fonctionnalités, il peut y avoir des problèmes qui dépendent de ce qui est fait avec les fonctions. TRY\CONVERT de SqlServer renvoie des valeurs nulles si la conversion n’a pas été possible.

Ce comportement peut être utilisé pour appliquer la logique suivante

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

Ce type de conditions avec TRY_CONVERT peut être utilisé avec TRY_CAST, mais que se passe-t-il s’il est transformé en TO_VARCHAR, TOCHAR ou en CAST ? Si la conversion dans ces fonctions échoue, elle provoquera une erreur au lieu de renvoyer simplement null.

Exemples

Dans cet échantillon, nous avons plusieurs TRY_CONVERT avec différents types de données

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

Si nous migrons cette sélection, nous obtiendrons le résultat suivant

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

Exécutons chacune d’entre elles et comparons les résultats.

Alias

Résultat de SqlServer

Résultat de 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 connexes

  1. SSC-FDM-TS0005 : TRY_CONVERT/TRY_CAST n’a pas pu être converti en TRY_CAST.

Fonctions de date et d’heure

Cette section décrit les équivalents fonctionnels des fonctions de date et d’heure dans Transact-SQL vers Snowflake SQL et le code JavaScript.

AT TIME ZONE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Convertit inputdate dans la valeur datetimeoffset correspondante dans le fuseau horaire cible. (AT TIME ZONE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
inputdate AT TIME ZONE timezone
Copy
Snowflake SQL

Documentation Snowflake SQL

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

CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
Copy

Exemples

SQL Server

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

Résultat :

                          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

Résultat :

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

Résultat :

                          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

Résultat :

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

Problèmes connus

  1. Snowflake ne prend pas en charge tous les fuseaux horaires comme SQL Server. Vous pouvez consulter les fuseaux horaires pris en charge ici.

SQL Server

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

Résultat :

                          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 connexes

  1. SSC-FDM-TS0024 : L’instruction CURRENT_TIMESTAMP dans At Time Zone peut avoir un comportement différent dans certains cas.

  2. SSC-EWI-TS0063 : Fuseau horaire non pris en charge par Snowflake.

DATEADD

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie un entier représentant la partie de la date spécifiée. (DATEPART dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

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

Résultat :

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

Résultat :

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

DATEDIFF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie la valeur de retour (sous forme d’entier signé) des limites de la partie de date spécifiée franchies entre la startDate et la endDate spécifiées. (DATEDIFF dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

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

Résultat :

DIFF

1

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

Résultat :

DIFF

1

DATEFROMPARTS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie une valeur date qui mappe les valeurs de l’année, du mois et du jour spécifiées. (DATEFROMPARTS in Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

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

Résultat :

RESULT

2022-12-12

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

Résultat :

RESULT

2022-12-12

DATENAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie une chaîne de caractères représentant la partie de la date spécifiée. (DATENAME dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
DATENAME ( datepart , date )  
Copy
Snowflake SQL

Note

Cette transformation utilise plusieurs fonctions qui dépendent des entrées

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

Exemples

SQL Server

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

Résultat :

DATE1

DATE2

DATE3

Mai

3

Mardi

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

Résultat :

DATE1

DATE2

DATE3

Mai

Mar

Mar

DATEPART

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie un entier représentant la partie de la date spécifiée. (DATEPART dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
DATEPART ( datepart , date )  
Copy
Snowflake SQL

Documentation Snowflake SQL

DATE_PART( <date_or_time_part> , <date_or_time_expr> )
Copy

Exemples

SQL Server

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

Résultat :

YEAR

2022

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

Résultat :

YEAR

2022

DAY

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonctionnalité renvoie un entier qui représente le jour (jour du mois) de la date spécifiée. (DAY dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
DAY ( date )  
Copy
Snowflake SQL

Documentation Snowflake SQL

DAY( <date_or_timestamp_expr> )
Copy

Exemples

SQL Server

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

Résultat :

DAY

10

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

Résultat :

DAY

10

EOMONTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Cette fonction renvoie le dernier jour du mois contenant une date spécifiée, avec un décalage facultatif. (EOMONTH dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

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

Documentation Snowflake SQL

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

Exemples

SQL Server

SELECT EOMONTH (GETDATE()) AS Result; 
Copy

Résultat :

RESULT

2022-05-31

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

Résultat :

RESULT

2022-05-31

GETDATE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie l’horodatage actuel du système de la base de données sous la forme d’une valeur datetime sans le décalage du fuseau horaire de la base de données. (GETDATE dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
GETDATE() 
Copy
Snowflake SQL

Documentation Snowflake SQL

CURRENT_TIMESTAMP( [ <fract_sec_precision> ] )
Copy

Exemples

SQL Server

SELECT GETDATE() AS DATE;
Copy

Résultat :

DATE

2022-05-06 09:54:42.757

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

Résultat :

DATE

2022-05-06 08:55:05.422

MONTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie un entier qui représente le mois de la date spécifiée. (MONTH dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
MONTH( date )  
Copy
Snowflake SQL

Documentation Snowflake SQL

MONTH ( <date_or_timestamp_expr> )
Copy

Exemples

SQL Server

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

Résultat :

MONTH

10

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

Résultat :

MONTH

10

SWITCHOFFSET

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

SWITCHOFFSET ajuste une valeur d’horodatage donnée à un décalage de fuseau horaire spécifique. Cela se fait par le biais de valeurs numériques. De plus amples informations sont disponibles ici : SWITCHOFFSET (Transact-SQL).

Modèle de source d’échantillon

Syntaxe

Un assistant UDF accomplit l’équivalence fonctionnelle : elle partage aussi la même syntaxe que la fonction SWITCHOFFSET de SQLServer.

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

Exemple

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

Résultat :

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

Résultat :

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

Description

Renvoie une valeur datetime2(7) qui contient la date et l’heure de l’ordinateur sur lequel l’instance SQL Server est exécutée. (SYSDATETIME dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
SYSDATETIME ( )  
Copy
Snowflake SQL

Documentation Snowflake SQL

LOCALTIME()
Copy

Exemples

SQL Server

SELECT SYSDATETIME ( ) AS SYSTEM_DATETIME;
Copy

Résultat :

SYSTEM_DATETIME

2022-05-06 12:08:05.501

Snowflake SQL
SELECT LOCALTIME ( ) AS SYSTEM_DATETIME;
Copy

Résultat :

SYSTEM_DATETIME

211:09:14

SYSUTCDATETIME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie une valeur datetime2(7) qui contient la date et l’heure de l’ordinateur sur lequel l’instance SQL Server est exécutée. (SYSUTCDATETIME dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
SYSUTCDATETIME ( )  
Copy
Snowflake SQL

Documentation Snowflake SQL

SYSDATE()
Copy

Exemples

SQL Server

SELECT SYSUTCDATETIME() as SYS_UTC_DATETIME;
Copy

Résultat :

SYSTEM_UTC_DATETIME

2023-02-02 20:59:28.0926502

Snowflake SQL
SELECT
SYSDATE() as SYS_UTC_DATETIME;
Copy

Résultat :

SYSTEM_UTC_DATETIME

2023-02-02 21:02:05.557

YEAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Description

Renvoie un entier qui représente l’année de la date spécifiée. (YEAR dans Transact-SQL).

Modèle de source d’échantillon

Syntaxe

SQL Server
YEAR( date )  
Copy
Snowflake SQL

Documentation Snowflake SQL

YEAR ( <date_or_timestamp_expr> )
Copy

Exemples

SQL Server

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

Résultat :

YEAR

2022

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

Résultat :

YEAR

2022