2.5 SQLフォーマット句およびDATATRIEVEフォーマット句
オプションのSQLフォーマット句およびDATATRIEVEフォーマット句を使用すると、対話型SQLユーザー、DATATRIEVEユーザー、または両方のユーザーに対するデータ表示または問合せの特性を変更できます。オプションのフォーマット句(QUERY NAMEおよびEDIT STRING)とDATATRIEVE句(QUERY HEADERおよびDEFAULT VALUE)は、次の文とともに使用できます。
次の図は、これらの句の形式を示しています。
詳細は、DATATRIEVEのドキュメントを参照してください。
次の項では、SQLフォーマット句のQUERY HEADERおよびEDIT STRINGについて説明します。
2.5.1 QUERY HEADER句
QUERY HEADER句では、該当する列を含む結果表を表示するときにSQLで使用される列ヘッダーを指定します。
QUERY HEADER句を含めると、問合せヘッダーが列ヘッダーとして使用されます。省略すると、列名が列ヘッダーとして使用されます。
列ヘッダーには、改行または制御文字を除く、すべての文字を含めることができます。列ヘッダーに二重引用符を含めるには、二重引用符を一重引用符で囲みます。
次の例では、1つの列の問合せヘッダーおよび別の列のDATATRIEVE問合せ名を定義しています。
SQL> ALTER TABLE TEMP cont> ADD STATE CHAR (2) cont> QUERY NAME FOR DATATRIEVE IS 'ST' cont> ADD SEX CHAR (1) cont> QUERY HEADER IS 'S'/'E'/'X'; |
これらの文では、STATE列およびSEX列の問合せヘッダーおよび問合せ名を定義しています。スラッシュ文字(/)はヘッダーが3行に分割されていることを示しているため、SEX列のヘッダーは、列自体と同じように1文字幅となります。
この例で使用している問合せヘッダーは、SQLとDATATRIEVEの両方に表示されます。問合せ名はDATATRIEVEでのみ認識されます。
2.5.2 EDIT STRING句
EDIT STRING句では、列値の出力形式を指定します。列値をファイルまたは出力デバイスに書き込む場合、EDIT STRING句がデフォルト形式として使用されます。
列値の形式を指定するには、1つ以上の編集文字の文字列を使用します。埋込みの空白を含まずに、一重引用符で編集文字列を指定します。通常、それぞれの編集文字は、表示される出力の1文字位置に相当します。たとえば、999999は、出力が6文字位置の6桁であることを示しています。
多くの同じ編集文字を入力するには、編集文字の後ろに繰返し回数をカッコで囲んで示し、編集文字列を短くします。たとえば、編集文字列9(6)は、999999に相当します。
通貨記号($)、小数点(.)および桁セパレータ(,)の各編集文字列の表示についてSQLとDATATRIEVEで使用される文字を変更できます。
その他の数値および通貨の表記法に出力を準拠させるには、次の論理名を再定義して、システムのデフォルトの記号をオーバーライドします。
SET文を使用してこれらの論理名をオーバーライドすることもできます。詳細は、「SET文」を参照してください。
表2-16から表2-23は、編集文字列を示しています。編集文字を指定する場合は、フィールドのタイプ(アルファベット文字、英数字、数値または日付)を考慮する必要があります。アルファベット文字または英数字のみと指定されている編集文字列を数値フィールドで使用するか、またはその逆を行うと、予期しない結果が生じます。
表2-15は、SQLで認められているCDO編集文字列を示しています。
キャラクタ・ タイプ |
CDO文字 または文字列 |
---|---|
アルファベット文字 | A |
英数字 | T |
X | |
コロン | : |
カンマ | , |
日付、曜日、時間 | D |
H | |
J | |
M | |
N | |
P | |
R | |
Q | |
W | |
Y | |
% | |
* | |
小数点 | . |
桁 | 9 |
エンコード記号 | C |
指数 | E |
浮動 | S |
Z"文字列" | |
- | |
+ | |
$ | |
リテラル | '文字列' |
空白 | B |
マイナス・カッコ | (( )) |
欠落セパレータ | ? |
繰返し回数 | x(n) |
表2-16は、アルファベット文字と英数字の置換編集文字列を示しています。
キャラクタ・タイプ | 編集文字列 | 説明 |
---|---|---|
アルファベット文字の置換 | A | それぞれのAを、列のコンテンツのアルファベット文字に置換する。列のコンテンツの各桁またはアルファベット文字以外の文字の位置にアスタリスク(*)を配置する。
SQL> ALTER TABLE EMPLOYEES ALTER ADDRESS_DATA_1 |
英数字の置換 | X | それぞれのXを、列のコンテンツの1文字に置換する。
SQL> ALTER TABLE EMPLOYEES ALTER MIDDLE_INITIAL |
T | 列テキストに指定された表示列の数を予約する。T編集文字列は、文字列を折り返し表示する長さを制御する場合に便利である。Tを含む編集文字列にその他の文字を含めることはできない。
SQL> ALTER TABLE EMPLOYEES ALTER ADDRESS_DATA_1 |
表2-17は、数値の置換編集文字列を示しています。
編集文字列 | 説明 |
---|---|
9 | それぞれの9を、列のコンテンツの1桁に置換する。桁以外の文字は無視される。桁は右詰めで表示され、先行文字位置には(ある場合)、ゼロが移入される。
SQL> ALTER TABLE SALARY_HISTORY ALTER SALARY_AMOUNT |
Z | それぞれのZを、列のコンテンツの1桁に置換する。ただし、列のコンテンツの先行ゼロは空白に置換される。
SQL> ALTER TABLE SALARY_HISTORY ALTER SALARY_AMOUNT |
* | それぞれのアスタリスク(*)を、列のコンテンツの1桁に置換する。ただし、先行ゼロはアスタリスクに置換される。
SQL> ALTER TABLE SALARY_HISTORY ALTER SALARY_AMOUNT |
. | ピリオド(.)によって、小数点の文字位置を指定する。
SQL> ALTER TABLE SALARY_HISTORY ALTER SALARY_AMOUNT |
表2-18は、英数字挿入の編集文字列を示しています。
編集文字列 | 説明 |
---|---|
+ | 英数字列にプラス記号(+)が1つのみ指定されている場合、その文字位置にプラス記号(+)を挿入する。
SQL> ALTER TABLE EMPLOYEES ALTER EMPLOYEE_ID |
- | その文字位置にハイフン(-)を挿入する。
SQL> ALTER TABLE EMPLOYEES ALTER EMPLOYEE_ID |
. | その文字位置にピリオド(.)を挿入する。
SQL> ALTER TABLE EMPLOYEES ALTER MIDDLE_INITIAL |
, | その文字位置にカンマ(,)を挿入する。
SQL> ALTER TABLE EMPLOYEES ALTER EMPLOYEE_ID |
表2-19は、数値挿入の編集文字列を示しています。
編集文字列 | 説明 |
---|---|
+ | プラス記号(+)が1つのみ指定されている場合、列のコンテンツが正のときはプラス記号(+)を、列のコンテンツが負のときはマイナス記号(--)を左端の文字位置に配置する。
SQL> -- COL1 is INTEGER and contains the values 53333 and -53333: |
-- | マイナス記号(--)が1つのみ指定されている場合、列のコンテンツが正のときは空白を、列のコンテンツが負のときはマイナス記号(--)を左端の文字位置に配置する。
SQL> -- COL1 is INTEGER and contains the values 53333 and -53333: |
. | 論理名SYS$RADIX_POINTによって指定された文字(デフォルトは小数点(.))をその文字位置に挿入する。数値の編集文字列に小数点(.)を1つのみ配置する。(SYS$RADIX_POINTはOpenVMSでのみサポートされています。)
SQL> ALTER TABLE SALARY_HISTORY ALTER SALARY_AMOUNT |
, | カンマの左側すべての桁が抑制されたゼロの場合、カンマ(,)を空白に置換する。それ以外の場合は、論理名SYS$DIGIT_SEPによって指定された文字(デフォルトはカンマ)をその文字位置に挿入する。(SYS$DIGIT_SEPはOpenVMSでのみサポートされています。)
SQL> ALTER TABLE SALARY_HISTORY ALTER SALARY_AMOUNT |
CR | 列のコンテンツが負の場合は、文字CRを挿入する。列のコンテンツが正の場合は、空白を2つ挿入する。CRは、編集文字列の右端または左端のいずれかに1つのみ配置する。
SQL> -- COL1 is INTEGER and contains the values 53333 and -53333: |
DB | 列のコンテンツが負の場合は、文字DBを挿入する。列のコンテンツが正の場合は、空白を2つ挿入する。DBは、編集文字列の右端または左端のいずれかに1つのみ配置する。
SQL> -- COL1 is INTEGER and contains the values 53333 and -53333: |
(( )) | 列のコンテンツが負の場合は、編集文字列を二重カッコで囲み、列値の前後にカッコを挿入する。
SQL> -- COL1 is INTEGER and contains the values 53333 and -53333: |
表2-20は、英数字と数値挿入の編集文字列を示しています。
編集文字列 | 説明 |
---|---|
B | その文字位置に空白を挿入する。
SQL> ALTER TABLE EMPLOYEES ALTER EMPLOYEE_ID |
0 | その文字位置にゼロを挿入する。
SQL> ALTER TABLE SALARY_HISTORY ALTER SALARY_AMOUNT |
$ | ドル記号($)が1つのみ指定されている場合は、論理名SYS$CURRENCYによって指定された文字(デフォルトはドル記号)をその文字位置に挿入する。(SYS$CURRENCYはOpenVMSでのみサポートされている。)
SQL> ALTER TABLE SALARY_HISTORY ALTER SALARY_AMOUNT |
% | その文字位置にパーセント記号(%)を挿入する。
SQL> CREATE VIEW TEST (SALARY EDIT STRING '$99999.99', |
/ | その文字位置にスラッシュ(/)を挿入する。
SQL> ALTER TABLE EMPLOYEES ALTER LAST_NAME |
リテラル | その文字位置に引用符で囲まれた文字列リテラルを挿入する。引用符は出力には挿入されない。
SQL> ALTER TABLE EMPLOYEES ALTER LAST_NAME |
表2-21は、数値浮動挿入の編集文字列を示しています。
編集文字列 | 説明 |
---|---|
$ | 複数のドル記号($)がその他の編集文字列の左側に指定されている場合は、先行ゼロを抑制し、SYS$CURRENCY論理名によって指定された文字(デフォルトはドル記号)を左端の桁の左側に挿入する。(SYS$CURRENCYはOpenVMSでのみサポートされている。)
SQL> -- Compare this with single $ edit string character: |
+ | 複数のプラス記号(+)がその他の編集文字列の左側に指定されている場合は、先行ゼロを抑制し、列の値の記号(プラスまたはマイナス)を左端の桁の左側に表示する。
SQL> -- COL1 is INTEGER and contains the values 53333 and -53333: |
-- | 複数のマイナス記号(--)がその他の編集文字列の左側に指定されている場合は、マイナス記号と同じ位置にある先行ゼロを抑制する。列の値が負の場合は、左端の桁の左側にマイナス記号を表示する。
SQL> -- COL1 is INTEGER and contains the values 53333 and -53333: |
表2-22は、浮動小数点、NULL値および欠落値の各編集文字列を示しています。
キャラクタ・タイプ | 編集文字列 | 説明 |
---|---|---|
浮動小数点 編集文字列 |
E | Eは、編集文字列を浮動小数点または科学表記法の2つの部分に分割する。最初の部分は仮数の表示、2つ目の部分は指数の表示を制御する。
SQL> -- COL1 is INTEGER and contains the values 53333 and -53333: |
NULL値 欠落値 |
? | 疑問符(?)は、列値がNULLであるか(SQL)、またはMISSING VALUE句で(DATATRIEVEに)指定された値と一致する場合に表示される引用符付き文字列の始まりを示す。列値がNULLでない場合は、疑問符の前の編集文字列によって値の表示が制御される。
SQL> ALTER TABLE EMPLOYEES ALTER MIDDLE_INITIAL |
表2-23は、DATE VMSデータ型の日付置換編集文字列を示しています。
編集文字列 | 説明 |
---|---|
D | それぞれのDを、日付に対応する桁に置換する。日付編集文字列には2つまでのDが配置されるが、DDの使用を推奨する。
SQL> ALTER TABLE EMPLOYEES ALTER BIRTHDAY |
H | それぞれのHを、12時間表記での時間に対応する桁に置換する。 |
R | それぞれのRを、24時間表記での時間に対応する桁に置換する。 |
P | それぞれのPを、分に置換する。 |
Q | それぞれのQを、秒に置換する。 |
M | それぞれのMを、月の名前に対応する文字に置換する。M(9)の編集文字列は、月の名前全体を表示する。
SQL> ALTER TABLE EMPLOYEES ALTER BIRTHDAY |
N | それぞれのNを、月の数字の桁に置換する。日付編集文字列には2つ以下のNが配置されるが、NNの使用を推奨する。
SQL> ALTER TABLE EMPLOYEES ALTER BIRTHDAY |
Y | YYは世紀の年を、YYYYは年および世紀を表す。このリリースでは、9999年を超えるの日付のYYYYYがサポートされており、たとえば、YYYYNNDDは19990114と表される。 |
J | それぞれのJを、ユリウス暦の日付に対応する桁に置換する。日付編集文字列には3つ以下のJが配置されるが、JJJの使用を推奨する。
SQL> ALTER TABLE EMPLOYEES ALTER BIRTHDAY |
W | それぞれのWを、曜日に対応する文字に置換する。W(9)の編集文字列は、曜日全体を表示する。日付編集文字列には9つ以下のWを配置する。
SQL> ALTER TABLE EMPLOYEES ALTER BIRTHDAY |
B | それぞれのBを、その文字位置で空白に置換する。 |
/ | その文字位置にスラッシュ(/)を挿入する。 |
- | その文字位置にハイフン(-)を挿入する。 |
: | その文字位置にコロン(:)を挿入する。 |
. | その文字位置にピリオド(.)を挿入する。 |
% | その文字位置にパーセント正午標識(%)を挿入する。この文字列は、デフォルトで午前はAM、午後はPMとなる。 |
*(アスタリスク) | それぞれの*を、小数秒に置換する。たとえば、RR:PP:QQ.**は22:34:45.56と表される。 |