tsql-functions について
SQL Server 開発者向けの T-SQL 関数リファレンスです。関数の分類やバージョン別の対応状況に加え、文字列、日時、ウィンドウ、JSON の使用例を掲載しています。
主な機能
- 01カテゴリ別の関数リファレンス
- 02SQL Server のバージョン対応
- 03文字列・日時・ウィンドウの例
- 04JSON 操作の例
活用シーン
- 01関数の SQL Server バージョン対応を確認
- 02文字列や日時の変換関数を選定
- 03ウィンドウ関数の使用例を参照
- 04JSON 操作の例を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
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 | オフセット関数で NULL をスキップ | 2022+ |
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 FROM | NULL セーフな比較 |
基本パターン
文字列操作
-- 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 対応