mcpField
T
tsql-functions

tsql-functions

github.com/josiahsiegel数据与数据库59181 次安装19 周前更新
代码仓库

关于 tsql-functions

面向 SQL Server 开发者的 T-SQL 函数参考,涵盖函数分类、版本可用性和常见用法,并提供字符串、日期时间、窗口及 JSON 示例。

主要功能

  1. 01按类别整理函数参考
  2. 02标注 SQL Server 版本
  3. 03字符串、日期和窗口示例
  4. 04JSON 操作示例

适用场景

  1. 01确认函数适用的 SQL Server 版本
  2. 02选择字符串和日期转换函数
  3. 03参考窗口函数用法
  4. 04查询 JSON 操作示例

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill tsql-functions

安装后在 Claude Code 中输入/tsql-functions确认已加载。

附带文件references/string-functions.mdreferences/window-functions.md

详细介绍

T-SQL 函数参考

所有 T-SQL 函数类别的完整参考,包含特定版本的可用性。

快速参考

字符串函数
函数说明版本
CONCAT(str1, str2, ...)NULL 安全拼接2012+
CONCAT_WS(sep, str1, ...)使用分隔符拼接2017+
STRING_AGG(expr, sep)聚合字符串2017+
STRING_SPLIT(str, sep)拆分为多行2016+
STRING_SPLIT(str, sep, 1)包含序号列2022+
TRIM([chars FROM] str)移除首尾字符2017+
TRANSLATE(str, from, to)替换字符2017+
FORMAT(value, format).NET 格式字符串2012+
日期/时间函数
函数说明版本
DATEADD(part, n, date)添加时间间隔所有版本
DATEDIFF(part, start, end)计算差值(int)所有版本
DATEDIFF_BIG(part, s, e)计算差值(bigint)2016+
EOMONTH(date, [offset])月末日期2012+
DATETRUNC(part, date)截断到指定精度2022+
DATE_BUCKET(part, n, date)分组到时间桶2022+
AT TIME ZONE 'tz'时区转换2016+
窗口函数
函数说明版本
ROW_NUMBER()连续且唯一的编号2005+
RANK()排名,相同时留空位2005+
DENSE_RANK()排名,相同时不留空位2005+
NTILE(n)分配到 n 个组2005+
LAG(col, n, default)前一行的值2012+
LEAD(col, n, default)后一行的值2012+
FIRST_VALUE(col)窗口中的首个值2012+
LAST_VALUE(col)窗口中的末个值2012+
IGNORE NULLS在偏移函数中跳过 NULL2022+
SQL Server 2022 新函数
函数说明
GREATEST(v1, v2, ...)值中的最大值
LEAST(v1, v2, ...)值中的最小值
DATETRUNC(part, date)截断日期
GENERATE_SERIES(start, stop, [step])生成数字序列
JSON_OBJECT('key': val)创建 JSON 对象
JSON_ARRAY(v1, v2, ...)创建 JSON 数组
JSON_PATH_EXISTS(json, path)检查路径是否存在
IS [NOT] DISTINCT FROMNULL 安全比较

核心模式

字符串处理
-- 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
日期操作
-- 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
)
窗口函数
-- 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 操作
-- 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

更多参考资料

如需深入了解特定函数类别,请参阅:

  • references/string-functions.md - 完整的字符串函数参考,包含示例
  • references/window-functions.md - 窗口函数和排名函数,包含窗口帧规范

评论

支持 Markdown