Scalar Functions — String
String scalar functions cover manipulation, searching, encoding, parsing, and formatting of text values. ClickHouse and DuckDB have the broadest support. Several functions — including split(), replace_regex(), extract(), and all encoding functions — are unavailable in SQLite.
Legend: ✅ Supported · ⚠️ Approximated · ❌ Not Supported · 🔄 Rewritten
| Function | SQLite | MySQL | ClickHouse | PostgreSQL | DuckDB | Notes |
|---|---|---|---|---|---|---|
strlen() | ✅ | ✅ | ✅ | ✅ | ✅ | length() |
toupper() | ✅ | ✅ | ✅ | ✅ | ✅ | upper() |
tolower() | ✅ | ✅ | ✅ | ✅ | ✅ | lower() |
substring() | ✅ | ✅ | ✅ | ✅ | ✅ | substr(); ClickHouse index offset corrected; DuckDB 0-based (no offset) |
indexof() | ✅ | ✅ | ✅ | ✅ | ✅ | 0-based; occurrence arg not supported with warning |
strcat() | ✅ | ✅ | ✅ | ✅ | ✅ | SQLite/Postgres/DuckDB: ||; MySQL: concat() with NULL warning |
strcat_delim() | ✅ | ✅ | ✅ | ✅ | ✅ | concat_ws() |
strcat_array() | ❌ | ❌ | ✅ | ✅ | ✅ | Postgres/DuckDB: array_to_string; ClickHouse: arrayStringConcat |
split() | ❌ | ❌ | ✅ | ✅ | ✅ | Postgres: string_to_array; DuckDB: string_split; ClickHouse: splitByString |
replace_string() | ✅ | ✅ | ✅ | ✅ | ✅ | replace() |
replace_regex() | ❌ | ✅ | ✅ | ✅ | ✅ | SQLite: unsupported |
reverse() | ❌ | ✅ | ✅ | ✅ | ✅ | SQLite: unsupported (no built-in reversal) |
trim() | ✅ | ✅ | ✅ | ✅ | ✅ | With regex arg: ClickHouse/Postgres/MySQL/DuckDB only (not SQLite) |
trim_start() | ✅ | ✅ | ✅ | ✅ | ✅ | ltrim() / trimLeft() |
trim_end() | ✅ | ✅ | ✅ | ✅ | ✅ | rtrim() / trimRight() |
isempty() | ✅ | ✅ | ✅ | ✅ | ✅ | ClickHouse: isNull OR empty |
isnotempty() | ✅ | ✅ | ✅ | ✅ | ✅ | |
isnull() | ✅ |