Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
josiahsiegel avatar

Tsql Functions

  • 156 installs
  • 50 repo stars
  • Updated June 18, 2026
  • josiahsiegel/claude-plugin-marketplace

Author scalar, inline, and table-valued T-SQL functions with correct determinism, indexing implications, and reusable business logic in SQL Server.

About

Documents Microsoft SQL Server T-SQL function patterns: choosing scalar, inline, or multi-statement table-valued types, managing performance and determinism, applying schema binding, and testing reusable database functions for reporting and transactional workloads.

  • Scalar versus inline table-valued functions
  • Determinism and indexing performance impacts
  • Error handling and NULL semantics
  • Schema-bound and security definer patterns
  • Testing functions with sample datasets

Tsql Functions by the numbers

  • 156 all-time installs (skills.sh)
  • +4 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #260 of 911 Databases skills by installs in the Skillselion catalog
  • Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill tsql-functions

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs156
repo stars50
Last updatedJune 18, 2026
Repositoryjosiahsiegel/claude-plugin-marketplace

What it does

Author scalar, inline, and table-valued T-SQL functions with correct determinism, indexing implications, and reusable business logic in SQL Server.

Files

SKILL.mdMarkdownGitHub ↗

T-SQL Functions Reference

Complete reference for all T-SQL function categories with version-specific availability.

Quick Reference

String Functions

FunctionDescriptionVersion
CONCAT(str1, str2, ...)NULL-safe concatenation2012+
CONCAT_WS(sep, str1, ...)Concatenate with separator2017+
STRING_AGG(expr, sep)Aggregate strings2017+
STRING_SPLIT(str, sep)Split to rows2016+
STRING_SPLIT(str, sep, 1)With ordinal column2022+
TRIM([chars FROM] str)Remove leading/trailing2017+
TRANSLATE(str, from, to)Character replacement2017+
FORMAT(value, format).NET format strings2012+

Date/Time Functions

FunctionDescriptionVersion
DATEADD(part, n, date)Add intervalAll
DATEDIFF(part, start, end)Difference (int)All
DATEDIFF_BIG(part, s, e)Difference (bigint)2016+
EOMONTH(date, [offset])Last day of month2012+
DATETRUNC(part, date)Truncate to precision2022+
DATE_BUCKET(part, n, date)Group into buckets2022+
AT TIME ZONE 'tz'Timezone conversion2016+

Window Functions

FunctionDescriptionVersion
ROW_NUMBER()Sequential unique numbers2005+
RANK()Rank with gaps for ties2005+
DENSE_RANK()Rank without gaps2005+
NTILE(n)Distribute into n groups2005+
LAG(col, n, default)Previous row value2012+
LEAD(col, n, default)Next row value2012+
FIRST_VALUE(col)First in window2012+
LAST_VALUE(col)Last in window2012+
IGNORE NULLSSkip NULLs in offset funcs2022+

SQL Server 2022 New Functions

FunctionDescription
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 FROMNULL-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

Related skills

Databasesdatabases

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.