dataengref migrate

Home / SQL Server

SQL Server STRING_SPLIT in Snowflake, Databricks and BigQuery

STRING_SPLIT is a table-valued function used with CROSS APPLY. Snowflake has SPLIT_TO_TABLE, Databricks explodes the array from split(), and BigQuery unnests the array from SPLIT().

SQL Server function: STRING_SPLIT(string, separator [, enable_ordinal]) · SQL Server docs

Equivalents

TargetSupportSyntaxNotesSource
SnowflakeRewriteLATERAL SPLIT_TO_TABLE(string, delimiter)Returns SEQ, INDEX and VALUE columns; INDEX is the position of the element.Snowflake docs
DatabricksRewriteLATERAL VIEW explode(split(str, regex))split() treats the delimiter as a regular expression, so characters such as | or . must be escaped.Databricks docs
BigQueryRewriteCROSS JOIN UNNEST(SPLIT(value, delimiter))SPLIT returns an ARRAY; UNNEST WITH OFFSET gives the position.BigQuery docs

Behavior differences to check

Databricks

Examples

One row per tag

SQL Server
SELECT p.id, s.value AS tag FROM products p CROSS APPLY STRING_SPLIT(p.tags, ',') s;
Snowflake
SELECT p.id, s.value AS tag FROM products p, LATERAL SPLIT_TO_TABLE(p.tags, ',') s;
Databricks
SELECT p.id, tag FROM products p LATERAL VIEW explode(split(p.tags, ',')) t AS tag;
BigQuery
SELECT p.id, tag FROM products p CROSS JOIN UNNEST(SPLIT(p.tags, ',')) AS tag;

Other SQL Server functions

Last checked: · Paste a whole query into the SQL checker to find every function that needs a change.