Function support: mssql

What is specific to mssql: the rendering column is filled in only where this dialect departs from the standard one. The canonical form, and the SQL every dialect generates for a sample query, are on the function pages.

Function Category Kind Status Dialect rendering Notes
< comparison scalar standard
<= comparison scalar standard
<> comparison scalar standard
= comparison scalar standard
> comparison scalar standard
>= comparison scalar standard
AND logical scalar standard
BETWEEN comparison scalar standard
DISTINCT comparison scalar standard
IN comparison scalar standard
ISNULL comparison scalar standard
LIKE comparison scalar standard
NOT logical scalar standard
OR logical scalar standard
abs math scalar standard
acos math scalar standard
add arithmetic scalar standard
ascii string scalar standard
asin math scalar standard
at_zone datetime scalar standard
atan math scalar standard
avg aggregate aggregate standard
bit_length string scalar overridden (DATALENGTH(string) * 8)
calendar_distance datetime scalar standard
case conditional scalar standard
ceil math scalar overridden CEILING(value)
char_length string scalar overridden LEN(string)
chr string scalar overridden CHAR(code)
clock_now datetime scalar standard
coalesce conditional scalar standard
concat string scalar standard
concat_ws string scalar standard
cos math scalar standard
count aggregate aggregate standard
count_distinct aggregate aggregate standard no OVER clause
date_trunc datetime scalar overridden date_trunc(…) — dialect-specific rendering
day datetime scalar standard
day_add datetime scalar overridden DATEADD(DAY, n, value)
day_begin datetime scalar overridden CAST(CAST(value AS DATE) AS DATETIME2)
dayofweek datetime scalar overridden ((DATEDIFF(day, '19000101', value) % 7) + 1)
dayofyear datetime scalar overridden DATEPART(dayofyear, value)
days_between datetime scalar overridden (DATEDIFF_BIG(second, start, end) / 86400)
dense_rank window window standard
divide arithmetic scalar standard
exp math scalar standard
floor math scalar standard
greatest math scalar standard
hour datetime scalar overridden DATEPART(HOUR, value)
initcap string scalar unsupported
lag window window standard
lead window window standard
least math scalar standard
left string scalar standard
ln math scalar overridden LOG(value)
log math scalar overridden LOG(value, base)
log10 math scalar standard
lower string scalar standard
lpad string scalar overridden CASE WHEN LEN(string) >= length THEN LEFT(string, length) ELSE RIGHT(REPLICATE(fill, length) + CAST(string AS VARCHAR(MAX)), length) END
ltrim string scalar standard
make_date datetime scalar overridden DATEFROMPARTS(year, month, day)
make_time datetime scalar overridden TIMEFROMPARTS(hour, minute, second, 0, 0)
make_timestamp datetime scalar overridden DATETIME2FROMPARTS(year, month, day, hour, minute, second, 0, 0)
max aggregate aggregate standard
md5 string scalar overridden LOWER(CONVERT(VARCHAR(32), HASHBYTES('MD5', string), 2))
min aggregate aggregate standard
minus arithmetic scalar standard
minute datetime scalar overridden DATEPART(MINUTE, value)
mod math scalar overridden ((dividend) % NULLIF((divisor), 0))
month datetime scalar standard
month_add datetime scalar overridden DATEADD(MONTH, n, value)
month_begin datetime scalar overridden DATEADD(MONTH, DATEDIFF(MONTH, 0, value), 0)
month_end datetime scalar overridden EOMONTH(value)
months_between datetime scalar overridden (DATEDIFF(month, start, end) - CASE WHEN DAY(end) < DAY(start) THEN 1 ELSE 0 END)
multiply arithmetic scalar standard
negate arithmetic scalar standard
now datetime scalar standard
ntile window window standard
nullif conditional scalar standard
octet_length string scalar overridden DATALENGTH(string)
overlay string scalar overridden STUFF(string, start, length, replacement)
parse_date datetime scalar unsupported
parse_time datetime scalar unsupported
parse_timestamp datetime scalar unsupported
pi math scalar standard
position string scalar overridden CHARINDEX(substr, str)
power math scalar overridden POWER(CAST(base AS FLOAT), exponent)
quarter datetime scalar overridden DATEPART(quarter, value)
quarter_begin datetime scalar overridden DATEADD(QUARTER, DATEDIFF(QUARTER, 0, value), 0)
quarter_end datetime scalar overridden EOMONTH(DATEADD(QUARTER, DATEDIFF(QUARTER, 0, value), 0), 2)
random math scalar overridden RAND(CHECKSUM(NEWID()))
rank window window standard
regexp_count pattern_matching scalar unsupported
regexp_like pattern_matching scalar unsupported
regexp_replace pattern_matching scalar unsupported
regexp_substr pattern_matching scalar unsupported
repeat string scalar overridden REPLICATE(string, number)
replace string scalar standard
reverse string scalar standard
right string scalar standard
round math scalar overridden round(value, scale)
ROUND(value, 0)
row_number window window standard
rpad string scalar overridden LEFT(CAST(string AS VARCHAR(MAX)) + REPLICATE(fill, length), length)
rtrim string scalar standard
second datetime scalar overridden DATEPART(SECOND, value)
sign math scalar standard
sin math scalar standard
split_part string scalar overridden (SELECT value FROM STRING_SPLIT(string, delimiter, 1) WHERE ordinal = n)
sqrt math scalar standard
starts_with string scalar overridden starts_with(…) — dialect-specific rendering
string_agg aggregate aggregate overridden string_agg(value, separator)
STRING_AGG(value, separator) WITHIN GROUP (ORDER BY order_by)
no OVER clause
substring string scalar overridden substring(…) — dialect-specific rendering
sum aggregate aggregate standard
tan math scalar standard
to_bigint conversion scalar overridden CAST(ROUND(value, 0) AS BIGINT)
to_boolean conversion scalar overridden CAST(value AS BIT)
to_char formatting scalar overridden to_char(…) — dialect-specific rendering
to_date conversion scalar standard
to_decimal conversion scalar standard
to_double conversion scalar overridden CAST(value AS FLOAT)
to_float conversion scalar standard
to_hex string scalar overridden UPPER(CASE WHEN number = 0 THEN '0' ELSE SUBSTRING(CONVERT(VARCHAR(16), CONVERT(VARBINARY(8), CAST(number AS BIGINT)), 2), PATINDEX('%[^0]%', CONVERT(VARCHAR(16), CONVERT(VARBINARY(8), CAST(number AS BIGINT)), 2)), 16) END)
to_integer conversion scalar overridden CAST(ROUND(value, 0) AS INT)
to_number formatting scalar unsupported
to_smallint conversion scalar overridden CAST(ROUND(value, 0) AS SMALLINT)
to_text conversion scalar overridden CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
CAST(value AS VARCHAR(MAX))
to_time conversion scalar standard
to_timestamp conversion scalar overridden CAST(value AS DATETIME2)
to_utc datetime scalar standard
to_varchar conversion scalar standard
today datetime scalar overridden CAST(GETDATE() AS DATE)
translate string scalar standard
trim string scalar overridden trim(…) — dialect-specific rendering
trunc math scalar overridden ROUND(value, 0, 1)
ROUND(value, scale, 1)
upper string scalar standard
week datetime scalar overridden DATEPART(iso_week, value)
week_begin datetime scalar overridden DATEADD(day, -(DATEDIFF(day, 0, value) % 7), CAST(value AS DATE))
week_end datetime scalar overridden DATEADD(day, 6 - (DATEDIFF(day, 0, value) % 7), CAST(value AS DATE))
year datetime scalar standard
year_add datetime scalar overridden DATEADD(YEAR, n, value)
year_begin datetime scalar overridden DATEADD(YEAR, DATEDIFF(YEAR, 0, value), 0)
year_end datetime scalar overridden DATEFROMPARTS(YEAR(value), 12, 31)
years_between datetime scalar overridden (DATEDIFF(YEAR, start, end) - CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, start, end), start) > end THEN 1 ELSE 0 END)