tsql-functions
SKILL.md
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 examplesreferences/window-functions.md- Window and ranking functions with frame specifications
Weekly Installs
32
Repository
josiahsiegel/claude-plugin-marketplaceFirst Seen
Jan 19, 2026
Security Audits
Installed on
claude-code22
opencode22
gemini-cli21
antigravity21
cursor19
codex18