%TRUNCATE (SQL)
構文
%TRUNCATE(expression[,length])
説明
%TRUNCATE は、指定された長さになるまで expression を切り捨ててから EXACT 照合シーケンスで返します。
EXACT 照合は、まず純粋な数値 (x=+x としての値) を数値順で並べ、次に他のすべての文字列は文字列照合シーケンス順で並べます。EXACT 文字列照合シーケンスは、ANSI 標準の ASCII 照合シーケンスと同じものです。数字は大文字のアルファベット文字の前に照合され、大文字のアルファベット文字は小文字のアルファベット文字の前に照合されます。句読点文字は、そのシーケンスのそれぞれの場所で照合されます。
%TRUNCATE は NULL を変更せずに渡します。
%TRUNCATE は、InterSystems SQL の拡張機能であり、SQL 検索クエリ用として使用するものです。
この関数は、ObjectScript から TRUNCATE()Opens in a new tab メソッド・コールを使用して呼び出すこともできます。
WRITE $SYSTEM.SQL.Functions.TRUNCATE("This long string",9)
引数
expression
列名、文字列リテラル、または他の関数の結果となる文字列式。基本となるデータ型は、任意の文字タイプ (CHAR や VARCHAR2 など) とすることができます。expression にはサブクエリを指定できます。
length
切り捨てを行った結果の長さを示す引数 (オプション)。整数として指定します。expression の先頭から length の文字数までを返します。length を省略すると、%TRUNCATE 照合は %EXACT 照合と同じになります。((length)) のように二重括弧で length を囲むと、リテラル置換を抑制できます。
例
以下の例は %TRUNCATE を使用して、Name 値の最初の 4 文字を返します。
SELECT TOP 5 Name,%TRUNCATE(Name,4) AS ShortName
FROM Sample.Person
以下の例では、%TRUNCATE をサブクエリに適用しています。
SELECT TOP 5 Name, %TRUNCATE((SELECT Name FROM Sample.Company),10) AS Company
FROM Sample.Person
以下の例では、GROUP BY 節で %TRUNCATE を使用して、各文字で始まる名前の数を返すアルファベット・リストを作成しています。
SELECT Name AS FirstLetter,COUNT(Name) AS NameCount
FROM Sample.Person GROUP BY %TRUNCATE(Name,1) ORDER BY Name
以下の 2 つの例は、%TRUNCATE で EXACT 照合がどのように行われるかを示しています。最初の例にある ORDER BY では、Home_Street が切り捨てられて 2 文字になります。番地の最初の 2 文字はほぼ必ず数値になるので、Home_Street フィールドは、最初の 2 つの数字の数値順に並べられます。
SELECT Name,Home_Street
FROM Sample.Person
ORDER BY %TRUNCATE(Home_Street,2)
2 番目の例にある ORDER BY では、Home_Street が切り捨てられて 4 文字になります。4 番目の文字が (空白など) 数字でない番地があるので、先頭が 4 文字以上の数字である Home_Street 値 は、最初に数値順に並べられます。数値でない文字列が 最初の 4 文字にある Home_Street 値は、文字列順に並べられます。
SELECT Name,Home_Street
FROM Sample.Person
ORDER BY %TRUNCATE(Home_Street,4)
関連項目
-
%STARTSWITH 述語
-
%EXACT 照合関数
-
%SQLSTRING 照合関数
-
%TRUNCATE 照合関数