TSQL 関数
サポートしている関数
以下の TSQL 変数は実装されています。
ABS
ABS(num)
num の絶対値を返します。したがって、123.99 も -123.99 も 123.99 を返します。
ACOS
ACOS(float)
アーク・コサイン : コサインが float である角度をラジアン単位で返します。したがって、1 は 0 を返します。
ASCII
ASCII(char)
文字列 char の最初の文字に対応する整数値を返します。したがって、ASCII('A') は 65 を返します。
ASCII は UNICODE と機能的に同じです。この逆の関数は CHAR になります。
ASIN
ASIN(float)
アーク・サイン : サインが float である角度をラジアン単位で返します。したがって、1 は 1.570796326... を返します。
ATAN
ATAN(float)
アーク・タンジェント : タンジェントが float である角度をラジアン単位で返します。したがって、1 は 0.785398163... を返します。
AVG
AVG(numfield) AVG(DISTINCT numfield)
集約関数 : numfield 列の平均値を返すためにクエリで使用されます。例えば、SELECT AVG(Age) FROM Sample.Person のように使用します。AVG(DISTINCT numfield) では、field 列内の一意の値の平均値が計算されます。NULL フィールドは無視されます。
CAST
CAST(expression AS datatype)
指定した datatype に変換した expression を返します。CAST はサポートされるデータ型で使用できます。詳細は、"Caché SQL リファレンス" の "データ型" を参照してください。
expression が '2004–11–23' のような日付の文字列で、datatype が TIMESTAMP または DATETIME の場合、'00:00:00' の時間値が返されます。
expression が '1:35PM' のような時間の文字列で、datatype が TIMESTAMP または DATETIME の場合、時刻は 24 時間形式に変換され、AM や PM の接尾語は削除され、秒単位の部分はゼロで埋められます。'1900–01–01' が既定の日付値として返されます。したがって、'1:35PM' は '1900–01–01 13:35:00' に変換されます。
expression が '2004–11–23' のような日付の文字列で、datatype が DATE の場合、日付は 60703 (March 14, 2007) のような Caché $HOROLOG 日付形式で返されます。
Caché TSQL では、データ型 XML はサポートされていません。しかし、コンパイル中のエラーを生成する代わりに、SQL モードの CAST(x AS XML) が CAST(x AS VARCHAR(32767)) を生成します。 プロシージャ・モードでは、CAST(x AS XML) は変換の生成は行いません。
"CONVERT" を参照してください。
CEILING
CEILING(num)
num 以上の最も近い整数が返されます。したがって、123.99 では 124、-123.99 では -123 を返します。
CHAR
CHAR(num)
整数値 num に対応する文字を返します。したがって、CHAR(65) は A を返します。
CHAR は NCHAR と機能的に同じです。この逆の関数は ASCII になります。
CHAR_LENGTH / CHARACTER_LENGTH
CHAR_LENGTH(string) CHARACTER_LENGTH(string)
string の文字数を返します。
CHARINDEX
CHARINDEX(seekstring,target[,startpoint])
target の中の seekstring の最初のオカレンスの最初の文字に相当する場所 (1 からカウントします) を返します。オプションの startpoint 整数を使用して、どこから検索を開始するかを指定できます。返り値は、startpoint に関係なく、target の最初からカウントされます。startpoint を指定しない場合および 0、1 または負の値を指定した場合、target は最初から検索されます。seekstring が見つからない場合、CHARINDEX は 0 を返します。
COALESCE
COALESCE(expression1,expression2,...)
指定された式のリストから、最初の非 NULL 式を返します。
COL_NAME
COL_NAME(object_id,column_id)
列名を返します。プロシージャ・コードまたはトリガ・コード内で使用されます。
TSQL では、この関数に対して 2 つの引数をサポートします。3 番目の引数はサポートされません。
以下の例は、Sample.Person の 4 番目の列名を返します。
SET sql=2
SET sql(1)="SELECT 'column name'=COL_NAME(id,4) FROM Sample.Person"
SET sql(2)="WHERE id=OBJECT_ID('Sample.Person')"
SET statement=##class(%SQL.Statement).%New()
SET statement.%Dialect="MSSQL"
SET status=statement.%Prepare(.sql)
SET result=statement.%Execute()
DO result.%Display()
CONVERT
CONVERT(datatype,expression[,format-code])
指定した datatype に変換した expression を返します。
datatype が BIT で expression がブーリアン値の場合、入力値が 0 以外の数字ならば結果が 1 となり、入力値が 0 ならば結果が 0 となります。また、入力値が文字列 'TRUE' (大文字と小文字の区別なし) ならば結果が 1 となり、入力値が文字列 'FALSE' (大文字と小文字の区別なし) ならば結果が 0 となります。さらに、入力値が NULL ならば結果が NULL となります。入力値がこれ以外の場合には、SQLCODE -141 エラーが生成されます。
datatype が日時またはタイムスタンプで、expression が '2004–11–23' のような日付の文字列の場合、'00:00:00' の時間値が返されます。expression が '1:35PM' のような時間の文字列で、datatype が日時またはタイムスタンプの場合、時刻は 24 時間形式に変換され、AM や PM の接尾語は削除され、秒単位の部分はゼロで埋められます。'1900–01–01' が既定の日付値として返されます。したがって、'1:35PM' は '1900–01–01 13:35:00' に変換されます。
CONVERT は DATETIME2 データ型をサポートします。Caché は DATETIME2 を、システム定義 DDL マッピング %Library.TimeStamp にマップします。このマッピングは新規インストールで提供されます。アップグレード・インストールを使用している場合は、このマッピングの作成が必要になることもあります。
オプションの format-code 引数を使用して、日時またはタイムスタンプの値を文字列に変換するときの日付/時刻の形式を指定できます。さまざまな形式コードを指定することにより、異なる複数の形式で日付と時刻を返すことができます。返すことが可能な形式コードは、0 から 14 (100 から 114)、20 & 21 (120 & 121)、126、130、および 131 です。既定の format-code は 120 です。
yyyy-mm-dd hh:mm:ss
形式コード 20 & 21 (120 & 121) は、以下の形式もサポートします。
yyyy-mm-ddThh:mm:ss.fff
詳細は、"Caché SQL リファレンス" の Caché SQL "CONVERT" 関数を参照してください。機能的にはこれと同じです。
"CAST" を参照してください。
COS
COS(float)
コサイン : float で指定された角度のコサインを返します。したがって、1 は 0.540302305... を返します。
COT
COT(float)
コタンジェント : float で指定された角度のコタンジェントを返します。したがって、1 は .64209261593... を返します。
COUNT
COUNT(field) COUNT(DISTINCT field) COUNT(*) COUNT(1)
集約関数 : field 列の値の数を返すためにクエリで使用されます。NULL フィールドはカウントされません。例えば、SELECT COUNT(Name) FROM Sample.Person のように使用します。COUNT(*) および COUNT(1) は同義語で、すべての行をカウントします。COUNT(DISTINCT field) では、field 列内の一意の値の個数がカウントされます。NULL フィールドはカウントされません。
CURRENT_DATE
CURRENT_DATE CURRENT DATE
以下の形式で現在のローカル日付を返します。
yyyy-mm-dd
2 つの構文形式 (アンダースコアありとなし) は同じです。この関数では括弧を使用しないため注意してください。
この関数は、Sybase 言語および MSSQL 言語でサポートされる SQL Anywhere との互換性のために提供されています。
CURRENT_TIME
CURRENT_TIME CURRENT TIME
以下の形式で現在のローカル時間を返します。
hh:mm:ss
時刻は 24 時間形式で指定されます。秒の小数部は返されません。
2 つの構文形式 (アンダースコアありとなし) は同じです。この関数では括弧を使用しないため注意してください。
この関数は、Sybase 言語および MSSQL 言語でサポートされる SQL Anywhere との互換性のために提供されています。
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP CURRENT TIMESTAMP
次の形式で現在のローカルな日時を返します。
yyyy-mm-dd hh:mm:ss
時刻は 24 時間形式で指定されます。秒の小数部は返されません。
2 つの構文形式 (アンダースコアありとなし) は同じです。この関数では括弧を使用しないため注意してください。
CURRENT_USER
CURRENT_USER
現在のユーザ名を返します。
この関数では括弧を使用しないため注意してください。
DATALENGTH
DATALENGTH(expression)
expression を表現するのに使用したバイト数を示す整数を返します。したがって、'fred' は 4、+007.500 は 3 を返します。
DATEADD
DATEADD(code,num,date)
code で指定された間隔を num で指定された回数分加えることによって修正された date の値を返します。date は、さまざまな形式の日付、時刻または日付/時刻の文字列を取ることができます。以下のいずれかの code 値を指定できます。左の列は省略形、右の列は正式名称で、どちらで指定してもかまいません。
yy | Year |
Quarter | |
mm | Month |
dy | DayofYear |
dd | Day |
dw、w | Weekday |
wk | Week |
hh | Hour |
mi | Minute |
ss | Second |
ms | Millisecond |
コード値は、大文字と小文字を区別しません。Day、DayofYear、および Weekday はすべて同じ値を返します。
DATEADD で返される値には、常に次の形式で日付と時刻の両方が含められます。
yyyy-mm-dd hh:mm:ss.n
秒の小数部は、元の秒に小数部が含まれていた場合のみ返されます。
日付を指定しない場合 (つまり、date に時刻の値しか含まれていない場合)、日付は既定により 1/1/1900 となります。
date で時刻を指定しない場合、既定により 00:00:00 となります。時刻は常に 24 時間形式で返されます。
DATEDIFF
DATEDIFF(code,startdate,enddate)
startdate と enddate の間の code 間隔の数を返します。2 つの日付は、次の形式の日付、時刻または日付/時刻の文字列を取ることができます。
yyyy-mm-dd hh:mm:ss.n
以下のいずれかの code 値を指定できます。左の列は省略形、右の列は正式名称で、どちらで指定してもかまいません。
yy | Year |
mm | Month |
dd | Day |
dw、w | Weekday |
wk | Week |
hh | Hour |
mi | Minute |
ss | Second |
ms | Millisecond |
コード値は、大文字と小文字を区別しません。Day、DayofYear、および Weekday はすべて同じ値を返します。
日付を指定しない場合 (つまり、date または enddate に時刻の値しか含まれていない場合)、日付は既定により 1/1/1900 となります。
startdate や enddate で時刻を指定しない場合、既定により 00:00:00 となります。
DATENAME
DATENAME(code,date)
code で指定した日付の部分的な値を文字列として返します。date には、さまざまな形式の日付、時刻、または日付/時刻の文字列を指定できます。date に指定する文字列は引用符で囲む必要があります。code の値は引用符で囲んでも囲まなくてもかまいません。使用可能な code の値は、以下のとおりです。
yyyy, yy year |
年。4 桁の年数を返します。2 桁で指定した場合、DATENAME には先頭に '19' が付加されます。 |
qq, q quarter |
四半期。1 から 4 の整数を返します。 |
mm, m month |
月。月の正式名称を返します。例えば、'December' です。 |
dy, y dayofyear |
年間通算日。1 から 366 の日付を整数で返します。 |
dd, d day |
月間通算日。1 から 31 でカウントした整数を返します。 |
wk, ww week |
通算週。1 から 53 でカウントした整数を返します。 |
dw、w weekday |
曜日。日曜日から数えた曜日の数を返します。例えば 3 は火曜日です。 |
hh hour |
時。(24 時間形式で) 1 日のうちの時刻を 0 から 23 までの整数として返します。 |
mi, n minute |
分。0 から 59 の整数を返します。 |
ss, s second |
秒。0 から 59 の整数を返します。ミリ秒を表す小数部が含まれることがあります。 |
ms millisecond |
ミリ秒。秒の小数部を整数で返します。 |
コード値は、大文字と小文字を区別しません。
日付を指定しない場合、既定により 1/1/1900 となります。2 桁の年数は既定により 19xx となります。
時刻を指定しない場合、既定により 00:00:00 となります。時刻は常に 24 時間形式で返されます。秒の小数部が定義されている場合には必ず秒の小数部を含めて返されます。ミリ秒は、小数部ではなく、整数として返されます。
DATEPART
DATEPART(code,date)
code で指定した日付の部分的な値を整数として返します。date は、さまざまな形式の日付、時刻または日付/時刻の文字列を取ることができます。利用可能な code 値は DATENAME に示しています。
DAY
DAY(date)
指定した日付または日付/時刻の文字列の日付部分を返します。date は、次の ODBC タイムスタンプ形式で指定します。
yyyy-mm-dd hh:mm:ss.n
date には日付コンポーネントを含める必要があります。日付の区切り文字にはハイフン (-) を使用してください。
date は、60703 (March 14, 2007) のように Caché$HOROLOG 日付形式で指定することもできます。
DB_NAME
DB_NAME()
現在のネームスペース名を返します。引数は許可されません。
DEGREES
DEGREES(float)
ラジアン単位の角度測定値を、対応する度単位の測定値に変換します。
ERROR_MESSAGE
CATCH ブロック内から呼び出されたときには、現在のエラーメッセージを返します。そうでない場合は、NULL を返します。
ERROR_NUMBER
CATCH ブロック内から呼び出されたときには、現在の SQLCODE エラーを返します。そうでない場合は、NULL を返します。
EXEC
EXEC(@var)
以下の例に示すように、実行時にダイナミック SQL を実行します。
DECLARE @dyncode VARCHAR(200)
SELECT @dyncode='SELECT TOP 4 Name,Age FROM Sample.Person'
EXEC(@dyncode)
この動的な実行と、ストアド・プロシージャを実行する EXECUTE コマンドを比較してください。
EXP
EXP(num)
num の指数を返します。これは定数 e (2.71828182) の num 乗です。したがって、EXP(2) は 7.3890560989 を返します。
FLOOR
FLOOR(num)
num 以下の最も近い整数が返されます。したがって、123.99 では 123、-123.99 では -124 を返します。
GETDATE
GETDATE()
次の形式で現在のローカルな日時を返します。
yyyy-mm-dd hh:mm:ss.n
時刻は 24 時間形式で指定されます。秒の小数部が返されます。
GETUTCDATE
GETUTCDATE()
次の形式で現在の UTC (グリニッジ標準時間) の日時を返します。
yyyy-mm-dd hh:mm:ss.n
時刻は 24 時間形式で指定されます。秒の小数部が返されます。
HOST_NAME
HOST_NAME()
現在のホスト・システムのシステム名を返します。
INDEX_COL
INDEX_COL(table_name,index_id,key,[,user_id])
指定したテーブル内のインデックス付けされた列の名前を返します。table_name には完全修飾名を指定できます。index_id はテーブル内のインデックス数です。key はインデックス内のキーで、1 ~ sysindexes.keycnt (クラスタ化インデックスの場合) または sysindexes.keycnt+1 (非クラスタ化インデックスの場合) の値を指定します。user_id は解析されますが無視されます。
ISNULL
ISNULL(expr,default)
expr が NULL の場合、default が返されます。expr が NULL でない場合、expr が返されます。
ISNUMERIC
ISNUMERIC(expression)
expression が有効な数値の場合は 1、それ以外は 0 を返すブーリアン関数です。
LEFT
LEFT(string,int)
string からの文字を左からカウントした int 数を返します。int が string より大きい場合、完全な文字列が返されます。"RIGHT" を参照してください。
LEN
LEN(string)
string の文字数を返します。
LOG
LOG(num)
num の自然対数を返します。したがって、LOG(2) は .69314718055 を返します。
LOG10
LOG10(num)
num の常用対数を返します。したがって、LOG10(2) は .301029995663 を返します。
LOWER
LOWER(string)
大文字をすべて小文字に変換して string を返します。"UPPER" を参照してください。
LTRIM
LTRIM(string)
string から先頭の空白を削除します。"RTRIM" を参照してください。
MAX
MAX(numfield)
集約関数 : numfield 列の最大値を返すためにクエリで使用されます。以下はその例です。
SELECT MAX(Age) FROM Sample.Person
NULL フィールドは無視されます。
MIN
MIN(numfield)
集約関数 : numfield 列の最小値を返すためにクエリで使用されます。以下はその例です。
SELECT MIN(Age) FROM Sample.Person
NULL フィールドは無視されます。
MONTH
MONTH(date)
指定した日付または日付/時刻の文字列の月部分を返します。date は、次の ODBC タイムスタンプ形式で指定します。
yyyy-mm-dd hh:mm:ss.n
日付の区切り文字にはハイフン (-) を使用してください。それ以外の形式の日付は 0 を返します。
date は、60703 (March 14, 2007) のように Caché$HOROLOG 日付形式で指定することもできます。
NCHAR
NCHAR(num)
整数値 num に対応する文字を返します。したがって、NCHAR(65) は A を返します。
NCHAR は CHAR と機能的に同じです。この逆の関数は ASCII になります。
NEWID
NEWID()
SQL Server の UNIQUEIDENTIFIER データ型と互換性のある型の一意の値を返します。UNIQUEIDENTIFIER は、システムで生成される 16 バイトのバイナリ文字列で、グローバル一意識別子 (GUID) としても知られています。GUID は、不定期に接続されるシステム上のデータベースを同期するのに使用されます。GUID は 36 文字の文字列で、32 文字の 16 進数が、ハイフンで 5 つのグループに分割されて構成されてます。Caché TSQL では、UNIQUEIDENTIFIER はサポートされていません。グローバル一意識別子のデータ型として VARCHAR(36) が代わりに使用されます。
NEWID 関数は引数を取りません。引数の括弧は必須です。
フィールドを定義する際は、NEWID() を使用して DEFAULT 値を指定できます。
対応する Caché SQL 関数は $TSQL_NEWID です。
SELECT $TSQL_NEWID()
NOW
NOW(*)
次の形式で現在のローカルな日時を返します。
yyyy-mm-dd hh:mm:ss
時刻は 24 時間形式で指定されます。秒の小数部は返されません。
括弧内にアスタリスクが必要になることに注意してください。
NULLIF
NULLIF(expr1,expr2)
expr1 が expr2 と等しい場合、NULL を返します。それ以外の場合、expr1 を返します。
OBJECT_ID
OBJECT_ID(objname,objtype)
引用符付き文字列 (必要に応じてオブジェクト・タイプ) としてオブジェクト名を取り、指定されたオブジェクトの対応するオブジェクト IDを整数として返します。利用可能な objtype の値は、RI = FOREIGN KEY 制約、K = PRIMARY KEY または UNIQUE 制約、P = ストアド・プロシージャ、S = システム・テーブル、TR = トリガ、U = ユーザ・テーブル、V = ビューです。
CREATE PROCEDURE GetName
AS SELECT OBJECT_ID('Person','U')
GO
objname が存在しない場合、またはオプションの objtype が指定されていて、objname と一致しない場合は、NULL を返します。プロシージャ・コードまたはトリガ・コード内で使用されます。OBJECT_NAME の逆です。
OBJECT_NAME
OBJECT_NAME(id)
オブジェクト ID (整数) を取り、指定されたオブジェクトの対応するオブジェクト名を返します。id が存在しない場合、空文字列を返します。プロシージャ・コードまたはトリガ・コード内で使用されます。OBJECT_ID の逆です。
CREATE PROCEDURE GetID
AS SELECT OBJECT_NAME(22)
GO
PATINDEX
PATINDEX(pattern,string)
string の中で最初に出現した pattern の開始位置を 1 からカウントして整数を返します。string に pattern がない場合、0 を返します。pattern は、引用符付きの文字列として指定します。比較では大文字と小文字が区別されます。pattern には以下のワイルドカード文字を含めることができます。
% | ゼロ個以上の文字。例えば、'%a%' は、string の中の最初の 'a' の出現位置を返します。string の最初の文字が 'a' の場合も含まれます。 |
_ | 単独の文字。例えば、'_l%' を指定したときに、string が 'Al'、'el'、'il' などの部分文字列で始まる場合、1 を返します。 |
[xyz] | 指定した文字のリストの中にある任意の 1 文字。例えば、'[ai]l%' を指定したときに、string が 'el' や 'Al' ではなく 'al' や 'il' などの部分文字列で始まる場合、1 を返します。 |
[a-z] | 指定した文字の範囲の中にある任意の 1 文字。例えば、'%s[a-z]t%' には 'sat'、'set'、'sit' などが一致します。範囲は ASCII の昇順で指定する必要があります。 |
キャレット (^) 文字はワイルドカード文字ではありません。角括弧に含めるとリテラルとして処理されます。一般に pattern はパーセント (%) 文字で囲まれた検索文字列 ('%Chicago%') で構成され、string 全体を検索することを示します。
PI
PI()
定数 pi を返します。括弧は必須ですが、引数は指定しなくてもかまいません。したがって、PI() は 3.141592653589793238 を返します。
POWER
POWER(num,exponent)
exponent にした値 num を返します。
QUOTENAME
QUOTENAME(value)
value を区切り文字付き識別子として返します。TSQL は、二重引用符 ("value") を区切り文字としてサポートします。以下はその例です。
PRINT 123
// returns 123
PRINT QUOTENAME(123)
// returns "123"
RADIANS
RADIANS(float)
度単位の角度測定値を、対応するラジアン単位の測定値に変換します。
RAND
RAND([seed])
1 未満の小数値として乱数を返します。オプションの seed 整数引数は無視されます。これは互換性のために提供されています。クエリで RAND を複数回使用する場合は、別の乱数が返されます。
REPLACE
REPLACE(target,search,replace)
target 文字列に含まれる search 文字列の各インスタンスを検索し、replace 文字列に置き換えて、結果の文字列を返します。target 文字列から search 文字列を削除するには、replace に空白の文字列を指定します。
REPLICATE
REPLICATE(expression,repeat-count)
REPLICATE は、expression を repeat-count 回連結した文字列を返します。
expression が NULL の場合、REPLICATE は NULL を返します。expression が空文字列の場合、REPLICATE は空文字列を返します。
repeat-count が小数の場合、整数部のみを使用します。repeat-count が0 の場合、REPEAT は空文字列を返します。repeat-count が負の数の場合、または数値でない文字列の場合、REPEAT は NULL を返します。
整数 num で指定された回数の string を返します。
いずれかの引数が NULL の場合、REPLICATE は NULL を返します。string が空文字列 ('') の場合、REPLICATE は空文字列を返します。num が負の数の場合、REPLICATE は NULL を返します。num がゼロの場合、REPLICATE は空文字列を返します。
REVERSE
REVERSE(string)
string の文字の順序を反対にします。
RIGHT
RIGHT(string,int)
左からカウントした string からの文字の int 数を返します。int が string より大きい場合、完全な文字列が返されます。"LEFT" を参照してください。
ROUND
ROUND(num,length)
整数の length で指定した小数桁数に丸めた num を返します。length が小数桁数より大きい場合は丸められません。length が 0 の場合、num は整数に丸められます。length 引数を省略すると、既定の 0 となります。length が負の整数の場合、num は小数点より左の値に丸められます。3 つ目の引数は ROUND では許可されません。
RTRIM
RTRIM(string)
string から末尾の空白を削除します。
SCOPE_IDENTITY
同じスコープの IDENTITY 列に挿入された最後の ID 値を返します。ただし、最後の IDENTITY は現在のプロシージャのスコープに制限されません。したがって、現在のプロシージャ内の文が IDENTITY 値を生成したことがわかっている場合のみ、SCOPE_IDENTITY を使用する必要があります。例えば、SCOPE_IDENTITY は同じプロシージャ内の INSERT コマンドの後で使用する必要があります。
以下のダイナミック SQL の例では、2番目の INSERT から IDENTITY 値を返します。
SET sql=6
SET sql(1)="CREATE TABLE #mytest (MyId INT IDENTITY(1,1),"
SET sql(2)="Name VARCHAR(20))"
SET sql(3)="INSERT INTO #mytest(Name) VALUES ('John Smith')"
SET sql(4)="INSERT INTO #mytest(Name) VALUES ('Walter Jones')"
SET sql(5)="PRINT SCOPE_IDENTITY()"
SET sql(6)="DROP TABLE #mytest"
SET statement=##class(%SQL.Statement).%New()
SET statement.%Dialect="MSSQL"
SET status=statement.%Prepare(.sql)
SET result=statement.%Execute()
DO result.%Display()
SIGN
SIGN(num)
num の記号を示す値を返します。num が負の値 (例えば、-32) のときは -1 を返します。num が正の値 (例えば、32 または +32) のときは 1 を返します。num がゼロ (例えば、0 または -0) のときは 0 を返します。
SIN
SIN(float)
サイン : float で指定された角度のサインを返します。したがって、1 は .841470984807... を返します。
SPACE
SPACE(num)
長さ num の空白スペースの文字列を返します。
SQRT
SQRT(num)
num の平方根の値を返します。したがって、SQRT(9) は 3 を返します。
SQUARE
SQUARE(num)
num の二乗の値を返します。したがって、SQUARE(9) は 81 を返します。
STR
STR(num,[length[,precision]])
length 文字列を返します。length が数値 num (小数点や記号を含む) の文字数以上の場合、STR では、文字列に変換し、先頭の空白を埋め込んで length 文字の結果文字列とした数値 num を返します。
オプション整数 precision を指定すると、num は、文字列を変換する前に指定した小数桁数に切り捨てられます。precision を省略すると、num は整数部分まで切り捨てられます。precision が小数桁数より大きいときには、文字列の変換前に num には末尾のゼロが埋められます。
length を省略すると、既定により 10 となります。length が (precision での調整後の) num の文字数未満のとき、文字の length 数がすべてアスタリスクで構成されたダミーの文字列を返します。
STUFF
STUFF(string,start,length,replace)
削除した文字の length 数と挿入した replace 文字列を含む string を返します。削除および挿入の地点は、start 整数で指定されます。これは、string の最初からカウントされます。length が 0 のとき、文字は削除されません。replace が空の文字列のとき、文字は挿入されません。
start が string 内の文字数よりも大きい場合、値は返されません。start が 1 のとき、文字の length 数が string の最初から削除され、replace 文字列が挿入されます。start が 0 のとき、文字の length から 1 文字引いたものが string の最初から削除され、replace 文字列が挿入されます。
length が string の文字数以上のとき、replace 文字列が返されます。replace 文字列の長さは string または length の長さに制限されません。
SUBSTRING
SUBSTRING(string,start,length)
start の場所で始まる string の下位文字列を文字の length 数で返します。start が string の長さより大きいとき、または length が 0 のとき、文字列は返されません。
SUM
SUM(numfield) SUM(DISTINCT numfield)
集約関数 : numfield 列の合計値を返すためにクエリで使用されます。以下はその例です。
SELECT SUM(Age) FROM Sample.Person
SUM(DISTINCT numfield) は、field 列内の一意の値を合計します。NULL フィールドは無視されます。
SUSER_NAME
SUSER_NAME()
現在の OS ユーザの名前を返します。括弧は必須ですが、引数は指定しなくてもかまいません。TSQL の USER_NAME() 関数、Caché SQL の USER 関数、および ObjectScript の $USERNAME 特殊変数と同等です。
SUSER_SNAME
SUSER_SNAME()
現在の OS ユーザの名前を返します。括弧は必須ですが、引数は指定しなくてもかまいません。TSQL の USER_NAME() 関数、Caché SQL の USER 関数、および ObjectScript の $USERNAME 特殊変数と同等です。
TAN
TAN(float)
タンジェント : float で指定された角度のタンジェントを返します。したがって、1 は 1.55740772465... を返します。
TEXTPTR
TEXTPTR(field)
field で指定したイメージまたはテキスト列データへの内部ポインタを返します。このポインタのデータ型は VARBINARY(16) です。
TEXTVALID
TEXTVALID('table.field',textpointer)
TEXTPTR からイメージ列またはテキスト列への内部ポインタを受け取り、table.field で指定された値と比較します。このポインタが指定された table.field を指している場合は、1 を返します。そうでない場合は、0 を返します。
UNICODE
UNICODE(char)
文字列 char の最初の文字に対応する Unicode 整数値を返します。したがって、UNICODE('A') は 65 を返します。
UNICODE は ASCII と機能的に同じです。この逆の関数は CHAR になります。
UPPER
UPPER(string)
小文字をすべて大文字に変換して string を返します。"LOWER" を参照してください。
USER
USER
現在のユーザ名を返します。
この関数では括弧を使用しないため注意してください。
USER_NAME
USER_NAME([userid])
ユーザ ID で指定したユーザ名を返します。オプションの userid が省略されると、現在のユーザ名を返します。引数はオプションで、括弧は必須です。
YEAR
YEAR(date)
指定した日付または日付/時刻の文字列の年部分を返します。date は、次の ODBC タイムスタンプ形式で指定します。
yyyy-mm-dd hh:mm:ss.n
日付の区切り文字にはハイフン (-) またはスラッシュ (/) のいずれかを使用できます。
date は、60703 (March 14, 2007) のように Caché$HOROLOG 日付形式で指定することもできます。
サポートしていない関数
以下の Microsoft Transact-SQL 関数は、現時点の TSQL ではサポートしていません。APP_NAME、ATN2、BINARY_CHECKSUM、CHECKSUM、COL_LENGTH、COLLATIONPROPERTY、COLUMNPROPERTY、CURSOR_STATUS、DATABASEPROPERTY、DATABASEPROPERTYEX、DB_ID、DIFFERENCE、FILE_ID、FILE_NAME、FILEGROUP_ID、FILEGROUP_NAME、FILEGROUPPROPERTY、FILEPROPERTY、FORMATMESSAGE、FULLTEXTCATALOGPROPERTY、FULLTEXTSERVICEPROPERTY、GETANSINULL、HOST_ID、IDENT_CURRENT、IDENT_INCR、IDENT_SEED、IDENTITY、INDEXKEY_PROPERTY、INDEXPROPERTY、ISDATE、IS_MEMBER、IS_SRVROLEMEMBER、OBJECTPROPERTY、PARSENAME、PERMISSIONS、ROWCOUNT_BIG、SERVERPROPERTY、SESSIONPROPERTY、SESSION_USER、SOUNDEX、SQL_VARIANT_PROPERTY、STATS_DATE、STDEV、STDEVP、SYSTEM_USER、TYPEPROPERTY。