拡張SQLおよびXSL関数
「パブリッシャ」は、RTFテンプレートで使用する一連のSQLおよびXSL関数を拡張しました。
これらの拡張関数の構文は次のとおりです
<?xdofx:expression?>
拡張SQL関数または
<?xdoxslt:expression?>
拡張XSL関数用。
xdofx
文とXSL式を同じコンテキストに混在させることはできません。 たとえば、FIRST_NAMEとLAST_NAMEの2つの要素があり、30文字のフィールドに連結し、"x"という文字でフィールドを右に埋めたとします。 次を使用できませんでした:
<?xdofx:rpad(concat(FIRST_NAME,LAST_NAME),30, 'x')?>
これは、concatがXSL式であるためです。 かわりに、次を使用できます:
<?xdofx:rpad(FIRST_NAME||LAST_NAME),30,'x')?>
次の表に、サポートされている関数を示します:
SQL文またはXSL式 | 使用方法 | 説明 |
---|---|---|
2+3 |
|
加算 |
2-3 |
|
減算 |
2*3 |
|
乗算 |
2 div 3 |
|
除算 |
2**3 |
|
指数 |
3||2 |
|
連結 |
sdiv() |
|
ファンクションの結果が数字でない場合、指定した値を返します(NaN)。 示されている構文では、num1は除算、num2は除数、文字列はNaNが返された場合に返される値です。 次に例を示します。
|
lpad() |
|
文字列の左側を特定の文字セットでパッドします。 lpad関数の構文は次のとおりです: lpad(string1,padded_length,[pad_string]) string1は、文字をパディングする文字列(左側)です。padded_lengthは、返される文字数です。pad_stringは、string1の左側にパディングされる文字列です。 |
rpad() |
|
文字列の右側を特定の文字セットでパディングします。 rpad関数の構文は次のとおりです: rpad(string1,padded_length,[pad_string]).string1は、文字をパディングする文字列(右側)です。padded_lengthは、返される文字数です。pad_stringは、string1の右側にパディングされる文字列です |
trim() |
|
文字列内のスペースを削除します。 切り捨てるテキストを入力すると、切り捨てられたテキストが返されます。 |
ltrim() |
|
文字列の先頭のスペースを削除します。 |
rtrim() |
|
文字列内の末尾の空白を削除します。 |
truncate() |
|
小数点の右側のinteger桁に切り捨てられた「電話番号」を返します。 integerを省略すると、「電話番号」は整数値全体に切り捨てられます。小数点の左側の値を切り捨てるには、integerを負の値にできます。integerは整数である必要があります。 例 : |
replicate() |
|
指定された文字列を指定された回数レプリケートします。 例 : |
decode() |
|
IF-THEN-ELSE文の機能を使用します。 デコード関数の構文は次のとおりです: decode(expression, search, result [,search, result]...[, default]) 「式」は比較する値です。「検索」は式と比較される値です。「結果」は、式が検索と等しい場合に返される値です。一致が見つからない場合は「デフォルト」が返されます。 |
instr() |
|
文字列内の部分文字列のロケーションを返します。 インストゥルメント関数の構文は次のとおりです: instr(string1,string2,[start_position],[nth_appearance]) string1は検索する文字列です。string2は、string1で検索する部分文字列です。start_positionは、検索が開始されるstring1内の位置です。 文字列内の最初の位置は1です。 start_positionが負の場合、関数はstring1の末尾からstart_positionの文字数をカウントし、string1の先頭まで検索します。「外観」は、string2のn番目の外観です。 |
substr() |
|
文字列から部分文字列を抽出します。 部分関数の構文は次のとおりです: substr(string, start_position, length) stringはソース文字列です。start_positionは抽出の位置です。 文字列内の最初の位置は常に1です。「長さ」は、抽出する文字数です。 |
left() |
|
指定された文字数を文字列の左側から抽出します。 構文はleft(string, Numchars)です。たとえば、 |
right() |
|
指定された文字数の文字列を文字列の右側から抽出します。 構文はright(string, Numchars)です。たとえば、 |
replace() |
|
文字列内の文字シーケンスを別の文字セットに置き換えます。 replace関数の構文は次のとおりです: replace(string1,string_to_replace,[replacement_string]) string1は、一連の文字を別の文字セットに置き換える文字列です。string_to_replaceは、string1で検索される文字列です。replacement_stringはオプションです。 string1では、string_to_replaceのすべての出現箇所がreplacement_stringに置き換えられます。 |
to_number() |
|
オプションの書式モデルfmtで指定された書式の数値を含むCHAR、VARCHAR2、NCHARまたはNVARCHAR2データ型の値から、NUMBERデータ型の値に変換します。 |
format_number() |
|
数値を文字列に変換し、$_XDOLOCALEで指定されたロケールに従って数値を書式設定し、Javaのデフォルト記号を使用してnで指定された小数点以下の桁数に書式設定します。 次に例を示します : |
format_number() |
|
数値を文字列に変換し、指定されたセパレータを使用: 千のセパレータの場合はs1、小数セパレータの場合はs2。 次に例を示します : |
pat_format_number() |
|
指定されたパターンでフォーマットされた数値を返します。 次に例を示します : |
to_char() |
|
オプションの数値書式「ファム」を使用して、値(文字、日付または数値)をVARCHAR2データ型に変換します。 たとえば、 たとえば、 |
to_date() |
|
CHAR、VARCHAR2、NCHARまたはNVARCHAR2データ型の文字をDATEデータ型の値に変換します。 「ファム」は、「文字」の書式を指定する日付書式です。 「ファム」を省略した場合、「文字」はデフォルトの日付書式である必要があります。 「ファム」がJの場合、Julianの場合、「文字」は整数である必要があります。 |
format_date() |
|
ある書式で日付を読み取り、別の書式で作成します。 |
sysdate() |
|
現在の日時をXML標準日付書式で返します(例: : 1997-07-16T19:20:30.45+01:00). 戻り値のデータ型はDATEです。 この関数には引数は必要ありません。 レポート出力でsysdateを適切に書式設定する方法の詳細は、「レポートでのシステム日付(sysdate)の表示」を参照してください。 |
current_date() |
|
指定されたロケールおよびタイムゾーンの現在の日付をyyyy-MM-dd形式で返します。 この関数はグレゴリオ暦のみをサポートしています。 |
current_time() |
|
指定されたロケールおよびタイムゾーンの現在の時間を返します。 この関数はグレゴリオ暦のみをサポートしています。 |
maximum_date() |
|
セット内の要素の最大数を返します。 要素の日付値は、"yyyy-MM-dd"または"yyyy-MM-dd'T'HH:mm:ss"フォーマットである必要があります。 戻り値は、1970年1月1日00:00:00 GMT以降のミリ秒を表す数値です。 この数値は、millis_to_date()関数を使用して日付に戻すことができます。 |
minimum_date() |
|
セット内の要素の最小値を返します。 要素の日付値は、"yyyy-MM-dd"または"yyyy-MM-dd'T'HH:mm:ss.ms"の書式である必要があります。 戻り値は、1970年1月1日00:00:00 GMT以降のミリ秒を表す数値です。 この数値は、millis_to_date()関数を使用して日付に戻すことができます。 |
millis_to_date() |
|
日付値を変換します。これは、1970年1月1日00:00:00 GMTからのミリ秒を表す数値で、"yyyy-MM-dd'T'HH:mm:ss.ms+00:00"の書式に変換します。 format_date()関数を使用すると、書式設定された日付値をレポートに表示する必要な日付書式にさらに変換できます。 |
date_to_millis() |
|
"yyyy-MM-dd"または"yyyy-MM-dd'T'HH:mm"形式の日付値を、1970年1月1日00:00:00 GMTからのミリ秒を表す数値に変換します。 |
minimum() |
|
セット内の要素の最小値を返します。 |
date_diff() |
|
この関数は、指定されたロケールの2つの日付の差を取得するためのメソッドを提供します。 日付は"yyyy-MM-dd"書式にする必要があります。 この関数はグレゴリオ暦のみをサポートしています。 構文は次のとおりです :
例 : 1を返します 例 : -14を返します 例 : -7を返します |
sec_diff() |
|
指定されたロケールの2つの日付の差分を秒数で返します。 日付は"yyyy-MM-dd'T'HH:mm:ss"である必要があります。 この関数はグレゴリオ暦のみをサポートしています。 例 : |
get_day |
|
指定されたロケールでyyyy-MM-dd形式の日付値を返します。 この関数はグレゴリオ暦のみをサポートしています。 例 : |
get_month |
|
指定されたロケールでyyyy-MM-dd形式の日付値を返します。 この関数はグレゴリオ暦のみをサポートしています。 例 : |
get_year |
|
指定されたロケールで、日付の年値をyyyy-MM-dd形式で返します。 この関数はグレゴリオ暦のみをサポートしています。 例 : |
month_name |
|
指定されたロケールで月の名前を返します。 この関数はグレゴリオ暦のみをサポートしています。 この関数の構文は次のとおりです : |
最大 |
|
セット内の要素の最大数を返します。 |
abs |
|
入力した数値の絶対値を返します。 例 : |
chr |
|
データベース文字セットまたは各国語文字セットのいずれかで、nに相当するバイナリを持つ文字を返します。 |
ceil() |
|
n以上の最小の整数を返します。 |
floor() |
|
n以下の最大の整数を返します。 |
round (SQL関数) |
|
小数点の右側のinteger桁に丸められた「電話番号」を返します。 integerを省略すると、「電話番号」は0桁に丸められます。小数点の左側の桁を切り捨てるには、integerを負にすることができます。integerは整数にする必要があります。 例 : |
round (XSLT関数) |
|
小数点の右側のinteger桁に丸められた「電話番号」を返します。 integerを省略すると、「電話番号」は0桁に丸められます。小数点の左側の桁を切り捨てるには、integerを負にすることができます。integerは整数にする必要があります。 例 : |
lower() |
|
すべての文字を小文字にして「文字」を返します。「文字」には、CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBのいずれかのデータ型を指定できます。 戻り値はcharと同じデータ型です。 |
upper() |
|
すべての文字を大文字にして「文字」を返します。「文字」には、CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBのいずれかのデータ型を指定できます。 戻り値は、「文字」と同じデータ型です。 |
length |
|
「文字」の長さを返します。 LENGTHは、入力文字セットで定義された文字を使用して長さを計算します。 |
greatest |
|
exprsのリストの最大値を返します。 最初のexprs以降のすべてのexprsは、比較の前に最初のexprのデータ型に暗黙的に変換されます。 |
least |
|
exprsのリストの最小値を返します。 最初のexprs以降のすべてのexprsは、比較の前に最初のexprのデータ型に暗黙的に変換されます。 |
next_element |
|
現在のグループ内の次の要素を返します。 指定された要素の後に発生する要素を返します。 次に例を示します : |
prev_element |
|
現在のグループの前の要素を返します。 指定された要素の前に出現する要素を返します。 次に例を示します : |
set_array |
|
ハッシュ表の値を設定します。 構文は |
get_array |
|
ハッシュ表の指定された索引の値を返します。 構文は |
register_replace_string |
|
たとえば、
|
次の表に、サポートされている組合せ関数を示します。
SQL文 | 使用方法 |
---|---|
(2+3/4-6*7)/8 |
|
lpad(substr('1234567890',5,3),10,'^') |
|
decode('a','b','c','d','e','1')||instr('321',1,1) |
|
数値から単語への変換
この関数を使用すると、RTFテンプレート出力の単語に数値を変換できます。
これは小切手印刷の一般的な要件です。
to_check_number()関数の構文:
<?xdofx:to_check_number(amount, precisionOrCurrency, caseType, decimalStyle)?>
次の表では、関数の属性について説明します。
属性 | 説明 | 有効な値 |
---|---|---|
amount |
変換する番号。 |
いずれかの数字 |
precisionOrCurrency |
この属性には、精度(小数点以下の桁数)または通貨コード(小数点以下の桁数)を指定できます。 通貨コードでは、出力に通貨記号は生成されません。 |
2などの整数、または'USD'などの通貨コード。 |
caseType |
出力のケース・タイプ。 |
有効な値は次のとおりです: 'CASE_UPPER', 'CASE_LOWER', 'CASE_INIT_CAP' |
decimalStyle |
小数部エリアの出力タイプ。 |
有効な値は次のとおりです: 'DECIMAL_STYLE_FRACTION1', 'DECIMAL_STYLE_FRACTION2', 'DECIMAL_STYLE_WORD' |
小切手番号をインドの採番形式で出力するには、to_check_numberのかわりにtoCheckNumberIN関数を使用します。
次の表に、RTFテンプレートに入力された関数例と返された出力を示します。
RTFテンプレート・エントリ | 返された出力 |
---|---|
<?xdofx:to_check_number(12345.67, 2)?> |
Twelve thousand three hundred forty-five and 67/100 |
<?xdofx:to_check_number(12345.67, 'USD')?> |
Twelve thousand three hundred forty-five and 67/100 |
<?xdofx:to_check_number(12345, 'JPY', 'CASE_UPPER')?> |
TWELVE THOUSAND THREE HUNDRED FORTY-FIVE |
<?xdofx:to_check_number(12345.67, 'EUR', 'CASE_LOWER', 'DECIMAL_STYLE_WORDS')?> |
twelve thousand three hundred forty-five and sixty-seven |
<?xdofx:to_check_number(43526152,'INR','CASE_UPPER','DECIMAL_STYLE_WORDS')?> | FORTY-THREE MILLION FIVE HUNDRED TWENTY-SIX THOUSAND ONE HUNDRED FIFTY-TWO |
<?xdoxslt:toCheckNumberIN(43526152,'INR','CASE_UPPER','DECIMAL_STYLE_WORDS')?> | FOUR CRORES THIRTY FIVE LAKHS TWENTY SIX THOUSAND ONE HUNDRED FIFTY TWO |