dataengref migrate

Home / SQL Server

SQL Server CHARINDEX in Snowflake, Databricks and BigQuery

Snowflake and Databricks both accept CHARINDEX(substring, string [, start]) with the SQL Server argument order. BigQuery uses STRPOS(string, substring), with the arguments reversed, or INSTR for a start position.

SQL Server function: CHARINDEX(expressionToFind, expressionToSearch [, start_location]) · SQL Server docs

Equivalents

TargetSupportSyntaxNotesSource
SnowflakeSame nameCHARINDEX(expr1, expr2 [, start_pos])Same argument order; returns 0 when not found. POSITION is an alias.Snowflake docs
DatabricksSame namecharindex(substr, str [, pos])Synonym of locate; 1-based, returns 0 when not found.Databricks docs
BigQueryRewriteSTRPOS(value, subvalue)Arguments reversed: the string to search comes first. Use INSTR(value, subvalue, position) for a start position.BigQuery docs

Behavior differences to check

BigQuery

Examples

Domain part of an email address

SQL Server
SELECT SUBSTRING(email, CHARINDEX('@', email) + 1, 100) AS domain FROM users;
Snowflake
SELECT SUBSTRING(email, CHARINDEX('@', email) + 1, 100) AS domain FROM users;
Databricks
SELECT substring(email, charindex('@', email) + 1, 100) AS domain FROM users;
BigQuery
SELECT SUBSTR(email, STRPOS(email, '@') + 1) AS domain FROM users;

Other SQL Server functions

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