%EXTERNAL (SQL)
構文
%EXTERNAL(expression)
%EXTERNAL expression
概要
%EXTERNAL は、現在選択されているモード (表示モード) に関係なく、expression を DISPLAY 形式に変換します。DISPLAY 形式は、フィールドやデータ型の LogicalToDisplay メソッドによってどのようなデータ変換が実行されても、VARCHAR データ型でデータを表します。
通常、%EXTERNAL は、SELECT リストの select-item で使用されます。WHERE 節内で使用できますが、%EXTERNAL を使用すると指定されたフィールドでインデックスを使用できなくなるので、使用しないことをお勧めします。
%EXTERNAL を適用すると、列見出し名が “Expression_1” などの値に変更されます。したがって、後述の例で示すように、通常は列名のエイリアスを指定することをお勧めします。
%EXTERNAL による変換にかかわらず、日付は、日付フィールドまたは関数によって返されるデータ型に依存しています。%EXTERNAL は、CURDATE、CURRENT_DATE、CURTIME、および CURRENT_TIME の値を変換します。CURRENT_TIMESTAMP、GETDATE、GETUTCDATE、NOW、および $HOROLOG の値は変換しません。
%EXTERNAL によって %List 構造が DISPLAY 形式に変換されると、表示されるリスト要素は、空白スペースで区切られます。この “スペース” は実際には、CHAR(13) と CHAR(10) という 2 つの非表示文字です。
%EXTERNAL は、InterSystems SQL の拡張です。
現在の選択モードに関係なく expression を LOGICAL 形式に変換するには、%INTERNAL 関数を使用します。現在の選択モードに関係なく expression を ODBC 形式に変換するには、%ODBCOUT 関数を使用します。
表示形式オプションの詳細は、"データ表示オプション" を参照してください。
引数
expression
変換される式。 フィールド名、フィールド名を含む式、または変換可能なデータ型で値を返す関数 (DATE や %List など)。ストリーム・フィールドにすることはできません。
例
以下のダイナミック SQL の例では、DOB (誕生日) データ値を現在の選択モード形式で返し、%EXTERNAL 関数を使用して同じデータを返します。デモンストレーションのため、このプログラムでは、%SelectMode 値は、呼び出すごとにランダムに決定されます。
SELECT TOP 5 DOB,%EXTERNAL(DOB) AS ExtDOB
FROM Sample.Person
以下の例では、この関数の 2 つの構文形式を示します。それ以外は同じです。%List フィールドの %EXTERNAL (DISPLAY 形式)、%INTERNAL (LOGICAL 形式)、および %ODBCOUT (ODBC 形式) を指定します。
SELECT TOP 10 %EXTERNAL(FavoriteColors) AS ExtColors,
%INTERNAL(FavoriteColors) AS IntColors,
%ODBCOUT(FavoriteColors) AS ODBCColors
FROM Sample.Person
SELECT TOP 10 %EXTERNAL FavoriteColors AS ExtColors,
%INTERNAL FavoriteColors AS IntColors,
%ODBCOUT FavoriteColors AS ODBCColors
FROM Sample.Person
以下の例では、誕生日 (DOB) および丸めた誕生日 (DOB) の値を %EXTERNAL (DISPLAY 形式) に変換します。
SELECT %EXTERNAL(DOB) AS DOB,
%INTERNAL(ROUND(DOB,-3)) AS DOBGroup,
%EXTERNAL(ROUND(DOB,-3)) AS RoundedDOB
FROM Sample.Person
GROUP BY (ROUND(DOB,-3))
ORDER BY DOBGroup