サーチ…
前書き
SQLには、いくつかの組み込みスカラ関数が用意されています。各スカラー関数は、1つの値を入力として取り、結果セットの各行の出力として1つの値を戻します。
スカラー関数は、T-SQLステートメント内で式が許可されているすべての場所で使用します。
構文
- CAST(式AS data_type [(length)])
- CONVERT(データ型[(長さ)]、式[、スタイル])
- PARSE(string_value ASデータ型[USINGカルチャ])
- DATENAME(datepart、date)
- GETDATE()
- DATEDIFF(datepart、startdate、enddate)
- DATEADD(datepart、number、date)
- 選択(インデックス、val_1、val_2 [、val_n])
- IIF(boolean_expression、true_value、false_value)
- SIGN(数値式)
- POWER(float_expression、y)
備考
結果セット全体で動作する集合関数ではなく、結果セット内の各行のデータを操作するために、スカラ関数または単一行関数が使用されます。
スカラー関数には10種類あります。
- 構成機能は、現在のSQLインスタンスの構成に関する情報を提供します。
- 変換関数は、指定された操作のデータを正しいデータ型に変換します。たとえば、これらのタイプの関数は、文字列を日付または数値に変換して2つの異なる型を比較できるように情報を再フォーマットすることができます。
- 日付と時刻の関数は、日付と時刻の値を含むフィールドを操作します。数値、日付、または文字列の値を返すことができます。たとえば、関数を使用して、現在の曜日または年を取得したり、日付からその年のみを取得したりすることができます。
日付と時刻の関数によって返される値は、SQLインスタンスを実行しているコンピュータのオペレーティングシステムに設定された日付と時刻によって異なります。
- 論理演算子を使用して演算を実行する論理関数。それは一連の条件を評価し、単一の結果を返します。
- 数学関数は、数式に対して数学演算や計算を行います。このタイプの関数は、単一の数値を返します。
- メタデータ関数は、指定されたデータベース(名前やデータベースオブジェクトなど)に関する情報を取得します。
- セキュリティ機能は、データベースユーザーおよびロールに関する情報など、データベースのセキュリティを管理するために使用できる情報を提供します。
- 文字列関数は文字列値に対して操作を実行し、数値または文字列値を返します。
文字列関数を使用すると、データを結合したり、部分文字列を抽出したり、文字列を比較したり、文字列をすべて大文字または小文字に変換することができます。
- システム関数は操作を実行し、現在のSQLインスタンスの値、オブジェクト、および設定に関する情報を返します
- システム統計関数は、現在のSQLインスタンスに関するさまざまな統計情報を提供します。たとえば、システムの現在のパフォーマンスレベルを監視できます。
文字の変更
文字を変更する機能には、文字を大文字または小文字に変換したり、数値をフォーマット番号に変換したり、文字操作を行うなどがあります。
lower(char)
関数は、指定された文字パラメータを小文字に変換します。
SELECT customer_id, lower(customer_last_name) FROM customer;
お客様の姓が「SMITH」から「smith」に変更されたものを返します。
日時
SQLでは、日付と時刻のデータ型を使用してカレンダー情報を格納します。これらのデータ型には、時間、日付、smalldatetime、datetime、datetime2、およびdatetimeoffsetが含まれます。各データ型には特定の形式があります。
データ・タイプ | フォーマット |
---|---|
時間 | hh:mm:ss [.nnnnnnn] |
日付 | YYYY-MM-DD |
smalldatetime | YYYY-MM-DDh:mm:ss |
日付時刻 | YYYY-MM-DD hh:mm:ss [.nnn] |
日時2 | YYYY-MM-DD hh:mm:ss [.nnnnnnn] |
datetimeオフセット | YYYY-MM-DD hh:mm:ss [.nnnnnnn] [+/-] hh:mm |
DATENAME
関数は、日付の特定の部分の名前または値を戻します。
SELECT DATENAME (weekday,'2017-01-14') as Datename
データ名 |
---|
土曜日 |
GETDATE
関数を使用して、現在のSQLインスタンスを実行しているコンピュータの現在の日付と時刻を判別します。この関数には、タイムゾーンの違いは含まれません。
SELECT GETDATE() as Systemdate
システム日付 |
---|
2017-01-14 11:11:47.7230728 |
DATEDIFF
関数は、2つの日付の差を返します。
構文では、datepartは、差分の計算に使用する日付の部分を指定するパラメータです。 datepartは、年、月、週、日、時、分、秒、またはミリ秒です。 startdateパラメーターで開始日を指定し、enddateパラメーターで終了日を指定します。
SELECT SalesOrderID, DATEDIFF(day, OrderDate, ShipDate)
AS 'Processing time'
FROM Sales.SalesOrderHeader
SalesOrderID | 処理時間 |
---|---|
43659 | 7 |
43660 | 7 |
43661 | 7 |
43662 | 7 |
DATEADD
関数を使用すると、特定の日付の一部に間隔を追加できます。
SELECT DATEADD (day, 20, '2017-01-14') AS Added20MoreDays
20MoreDaysを追加しました |
---|
2017-02-03 00:00:00.000 |
構成および変換機能
SQLの構成関数の例は、 @@SERVERNAME
関数です。この関数は、SQLを実行しているローカル・サーバーの名前を提供します。
SELECT @@SERVERNAME AS 'Server'
サーバ |
---|
SQL064 |
SQLでは、ほとんどのデータ変換はユーザーの介入なしに暗黙的に行われます。
暗黙的に完了できない変換を実行するには、 CAST
関数またはCONVERT
関数を使用します。
CAST
関数の構文は、 CONVERT
関数の構文より簡単ですが、できることには限りがあります。
ここでは、 CAST
関数とCONVERT
関数の両方を使用して、datetimeデータ型をvarchar
データ型に変換します。
CAST
関数は、常にデフォルトのスタイル設定を使用します。たとえば、YYYY-MM-DDの形式で日付と時刻を表します。
CONVERT
関数は、指定した日付と時刻のスタイルを使用します。この場合、3は日付形式dd / mm / yyを指定します。
USE AdventureWorks2012
GO
SELECT FirstName + ' ' + LastName + ' was hired on ' +
CAST(HireDate AS varchar(20)) AS 'Cast',
FirstName + ' ' + LastName + ' was hired on ' +
CONVERT(varchar, HireDate, 3) AS 'Convert'
FROM Person.Person AS p
JOIN HumanResources.Employee AS e
ON p.BusinessEntityID = e.BusinessEntityID
GO
キャスト | 変換 |
---|---|
David Hamiltionは2003年2月4日に雇われました | David Hamiltionが04/02/03に雇われました |
変換関数の別の例は、 PARSE
関数です。この関数は、文字列を指定されたデータ型に変換します。
関数の構文では、変換する必要のある文字列、 AS
キーワード、および必要なデータ型を指定します。必要に応じて、文字列値を書式設定するカルチャを指定することもできます。これを指定しないと、セッションの言語が使用されます。
文字列の値を数値、日付、または時刻形式に変換できない場合、エラーになります。変換にはCAST
またはCONVERT
を使用する必要があります。
SELECT PARSE('Monday, 13 August 2012' AS datetime2 USING 'en-US') AS 'Date in English'
英語での日付 |
---|
2012-08-13 00:00:00.0000000 |
論理関数と数学関数
SQLには、2つの論理関数( CHOOSE
とIIF
ます。
CHOOSE
関数は、リスト内の位置に基づいて、値のリストから項目を戻します。この位置はインデックスによって指定されます。
構文では、indexパラメーターは項目を指定し、整数または整数です。 val_1 ... val_nパラメータは、値のリストを識別します。
SELECT CHOOSE(2, 'Human Resources', 'Sales', 'Admin', 'Marketing' ) AS Result;
結果 |
---|
販売 |
この例では、 CHOOSE
関数を使用して、部門リストの2番目の項目を戻します。
IIF
関数は、特定の条件に基づいて2つの値のいずれかを返します。条件が真の場合、真の値を返します。さもなければ、それは偽の値を返します。
構文では、boolean_expressionパラメータにブール式を指定します。 true_valueパラメーターは、boolean_expressionがtrueと評価された場合に戻される値を指定し、false_valueパラメーターは、boolean_expressionがfalseに評価された場合に戻される値を指定します。
SELECT BusinessEntityID, SalesYTD,
IIF(SalesYTD > 200000, 'Bonus', 'No Bonus') AS 'Bonus?'
FROM Sales.SalesPerson
GO
BusinessEntityID | SalesYTD | ボーナス? |
---|---|---|
274 | 559697.5639 | ボーナス |
275 | 3763178.1787 | ボーナス |
285 | 172524.4512 | ボーナスなし |
この例では、IIF関数を使用して2つの値のいずれかを返します。販売人の年初販売が200,000を超える場合、この人はボーナスの対象となります。 200,000未満の値は、従業員が賞与の対象にならないことを意味します。
SQLには、入力値を計算し数値結果を返すために使用できるいくつかの数学関数が含まれています。
1つの例は、式の符号を示す値を返すSIGN
関数です。 -1の値は負の式を示し、+1の値は正の式を示し、0はゼロを示します。
SELECT SIGN(-20) AS 'Sign'
符号 |
---|
-1 |
この例では、入力は負の数なので、Resultsペインには結果-1が表示されます。
もう一つの数学的関数はPOWER
関数です。この関数は、指定された累乗に引き上げられた式の値を提供します。
構文では、float_expressionパラメーターは式を指定し、yパラメーターは式を引き上げる力を指定します。
SELECT POWER(50, 3) AS Result
結果 |
---|
125000 |