T-SQL Functions Reference
Complete reference for all T-SQL function categories with version-specific availability.
Quick Reference
String Functions
| Function |
Description |
Version |
CONCAT(str1, str2, ...) |
NULL-safe concatenation |
2012+ |
CONCAT_WS(sep, str1, ...) |
Concatenate with separator |
2017+ |
STRING_AGG(expr, sep) |
Aggregate strings |
2017+ |
STRING_SPLIT(str, sep) |
Split to rows |
2016+ |
STRING_SPLIT(str, sep, 1) |
With ordinal column |
2022+ |
TRIM([chars FROM] str) |
Remove leading/trailing |
2017+ |
TRANSLATE(str, from, to) |
Character replacement |
2017+ |
FORMAT(value, format) |
.NET format strings |
2012+ |
Date/Time Functions
| Function |
Description |
Version |
DATEADD(part, n, date) |
Add interval |
All |
DATEDIFF(part, start, end) |
Difference (int) |
All |
DATEDIFF_BIG(part, s, e) |
Difference (bigint) |
2016+ |
EOMONTH(date, [offset]) |
Last day of month |
2012+ |
DATETRUNC(part, date) |
Truncate to precision |
2022+ |
DATE_BUCKET(part, n, date) |
Group into buckets |
2022+ |
AT TIME ZONE 'tz' |
Timezone conversion |
2016+ |
Window Functions
| Function |
Description |
Version |
ROW_NUMBER() |
Sequential unique numbers |
2005+ |
RANK() |
Rank with gaps for ties |
2005+ |
DENSE_RANK() |
Rank without gaps |
2005+ |
NTILE(n) |
Distribute into n groups |
2005+ |
LAG(col, n, default) |
Previous row value |
2012+ |
LEAD(col, n, default) |
Next row value |
2012+ |
FIRST_VALUE(col) |
First in window |
2012+ |
LAST_VALUE(col) |
Last in window |
2012+ |
IGNORE NULLS |
Skip NULLs in offset funcs |
2022+ |
SQL Server 2022 New Functions
| Function |
Description |
GREATEST(v1, v2, ...) |
Maximum of values |
LEAST(v1, v2, ...) |
Minimum of values |
DATETRUNC(part, date) |
Truncate date |
GENERATE_SERIES(start, stop, [step]) |
Number sequence |
JSON_OBJECT('key': val) |
Create JSON object |
JSON_ARRAY(v1, v2, ...) |
Create JSON array |
JSON_PATH_EXISTS(json, path) |
Check path exists |
IS [NOT] DISTINCT FROM |
NULL-safe comparison |
Core Patterns
String Manipulation
-- Concatenate with separator (NULL-safe)
SELECT CONCAT_WS(', ', FirstName, MiddleName, LastName) AS FullName
-- Split string to rows with ordinal
SELECT value, ordinal
FROM STRING_SPLIT('apple,banana,cherry', ',', 1)
-- Aggregate strings with ordering
SELECT DeptID,
STRING_AGG(EmployeeName, ', ') WITHIN GROUP (ORDER BY HireDate)
FROM Employees
GROUP BY DeptID
Date Operations
-- Truncate to first of month
SELECT DATETRUNC(month, OrderDate) AS MonthStart
-- Group by week buckets
SELECT DATE_BUCKET(week, 1, OrderDate) AS WeekBucket,
COUNT(*) AS OrderCount
FROM Orders
GROUP BY DATE_BUCKET(week, 1, OrderDate)
-- Generate date series
SELECT CAST(value AS date) AS Date
FROM GENERATE_SERIES(
CAST('2024-01-01' AS date),
CAST('2024-12-31' AS date),
1
)
Window Functions
-- Running total with partitioning
SELECT OrderID, CustomerID, Amount,
SUM(Amount) OVER (
PARTITION BY CustomerID
ORDER BY OrderDate
ROWS UNBOUNDED PRECEDING
) AS RunningTotal
FROM Orders
-- Get previous non-NULL value (SQL 2022+)
SELECT Date, Value,
LAST_VALUE(Value) IGNORE NULLS OVER (
ORDER BY Date
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
) AS PreviousNonNull
FROM Measurements
JSON Operations
-- Extract scalar value
SELECT JSON_VALUE(JsonColumn, '$.customer.name') AS CustomerName
-- Parse JSON array to rows
SELECT j.ProductID, j.Quantity
FROM Orders
CROSS APPLY OPENJSON(OrderDetails)
WITH (
ProductID INT '$.productId',
Quantity INT '$.qty'
) AS j
-- Build JSON object (SQL 2022+)
SELECT JSON_OBJECT('id': CustomerID, 'name': CustomerName) AS CustomerJson
FROM Customers
Additional References
For deeper coverage of specific function categories, see:
references/string-functions.md - Complete string function reference with examples
references/window-functions.md - Window and ranking functions with frame specifications
Source: JosiahSiegel/claude-plugin-marketplace — distributed by TomeVault.
1---2name: josiahsiegel-claude-plugin-marketplace-tsql-functions3description: T-SQL Functions Reference4---56# T-SQL Functions Reference78Complete reference for all T-SQL function categories with version-specific availability.910## Quick Reference1112### String Functions13| Function | Description | Version |14|----------|-------------|---------|15| `CONCAT(str1, str2, ...)` | NULL-safe concatenation | 2012+ |16| `CONCAT_WS(sep, str1, ...)` | Concatenate with separator | 2017+ |17| `STRING_AGG(expr, sep)` | Aggregate strings | 2017+ |18| `STRING_SPLIT(str, sep)` | Split to rows | 2016+ |19| `STRING_SPLIT(str, sep, 1)` | With ordinal column | 2022+ |20| `TRIM([chars FROM] str)` | Remove leading/trailing | 2017+ |21| `TRANSLATE(str, from, to)` | Character replacement | 2017+ |22| `FORMAT(value, format)` | .NET format strings | 2012+ |2324### Date/Time Functions25| Function | Description | Version |26|----------|-------------|---------|27| `DATEADD(part, n, date)` | Add interval | All |28| `DATEDIFF(part, start, end)` | Difference (int) | All |29| `DATEDIFF_BIG(part, s, e)` | Difference (bigint) | 2016+ |30| `EOMONTH(date, [offset])` | Last day of month | 2012+ |31| `DATETRUNC(part, date)` | Truncate to precision | 2022+ |32| `DATE_BUCKET(part, n, date)` | Group into buckets | 2022+ |33| `AT TIME ZONE 'tz'` | Timezone conversion | 2016+ |3435### Window Functions36| Function | Description | Version |37|----------|-------------|---------|38| `ROW_NUMBER()` | Sequential unique numbers | 2005+ |39| `RANK()` | Rank with gaps for ties | 2005+ |40| `DENSE_RANK()` | Rank without gaps | 2005+ |41| `NTILE(n)` | Distribute into n groups | 2005+ |42| `LAG(col, n, default)` | Previous row value | 2012+ |43| `LEAD(col, n, default)` | Next row value | 2012+ |44| `FIRST_VALUE(col)` | First in window | 2012+ |45| `LAST_VALUE(col)` | Last in window | 2012+ |46| `IGNORE NULLS` | Skip NULLs in offset funcs | 2022+ |4748### SQL Server 2022 New Functions49| Function | Description |50|----------|-------------|51| `GREATEST(v1, v2, ...)` | Maximum of values |52| `LEAST(v1, v2, ...)` | Minimum of values |53| `DATETRUNC(part, date)` | Truncate date |54| `GENERATE_SERIES(start, stop, [step])` | Number sequence |55| `JSON_OBJECT('key': val)` | Create JSON object |56| `JSON_ARRAY(v1, v2, ...)` | Create JSON array |57| `JSON_PATH_EXISTS(json, path)` | Check path exists |58| `IS [NOT] DISTINCT FROM` | NULL-safe comparison |5960## Core Patterns6162### String Manipulation63```sql64-- Concatenate with separator (NULL-safe)65SELECT CONCAT_WS(', ', FirstName, MiddleName, LastName) AS FullName6667-- Split string to rows with ordinal68SELECT value, ordinal69FROM STRING_SPLIT('apple,banana,cherry', ',', 1)7071-- Aggregate strings with ordering72SELECT DeptID,73 STRING_AGG(EmployeeName, ', ') WITHIN GROUP (ORDER BY HireDate)74FROM Employees75GROUP BY DeptID76```7778### Date Operations79```sql80-- Truncate to first of month81SELECT DATETRUNC(month, OrderDate) AS MonthStart8283-- Group by week buckets84SELECT DATE_BUCKET(week, 1, OrderDate) AS WeekBucket,85 COUNT(*) AS OrderCount86FROM Orders87GROUP BY DATE_BUCKET(week, 1, OrderDate)8889-- Generate date series90SELECT CAST(value AS date) AS Date91FROM GENERATE_SERIES(92 CAST('2024-01-01' AS date),93 CAST('2024-12-31' AS date),94 195)96```9798### Window Functions99```sql100-- Running total with partitioning101SELECT OrderID, CustomerID, Amount,102 SUM(Amount) OVER (103 PARTITION BY CustomerID104 ORDER BY OrderDate105 ROWS UNBOUNDED PRECEDING106 ) AS RunningTotal107FROM Orders108109-- Get previous non-NULL value (SQL 2022+)110SELECT Date, Value,111 LAST_VALUE(Value) IGNORE NULLS OVER (112 ORDER BY Date113 ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING114 ) AS PreviousNonNull115FROM Measurements116```117118### JSON Operations119```sql120-- Extract scalar value121SELECT JSON_VALUE(JsonColumn, '$.customer.name') AS CustomerName122123-- Parse JSON array to rows124SELECT j.ProductID, j.Quantity125FROM Orders126CROSS APPLY OPENJSON(OrderDetails)127WITH (128 ProductID INT '$.productId',129 Quantity INT '$.qty'130) AS j131132-- Build JSON object (SQL 2022+)133SELECT JSON_OBJECT('id': CustomerID, 'name': CustomerName) AS CustomerJson134FROM Customers135```136137## Additional References138139For deeper coverage of specific function categories, see:140141- `references/string-functions.md` - Complete string function reference with examples142- `references/window-functions.md` - Window and ranking functions with frame specifications143144---145> Source: [JosiahSiegel/claude-plugin-marketplace](https://github.com/JosiahSiegel/claude-plugin-marketplace) — distributed by [TomeVault](https://tomevault.io).146<!-- tomevault:4.0:skill_md:2026-05-22 -->