DOMAIN_DISPLAY
目的
DOMAIN_DISPLAYは、ドメインの表示式に従って書式設定されたexprを戻します。引数がドメインに関連付けられていないか、ドメインに表示式がない場合、NULLが戻されます。
複数列ドメインに対してDOMAIN_DISPLAYをコールする場合、exprのすべての値が同じドメインのものである必要があります。expr引数の数がドメイン列の数と異なる場合、またはドメイン内の順序が異なる場合、NULLを戻します。
非ドメイン値の表示式を取得するには、exprをドメイン・タイプにキャストします。これは、単一列のドメインでのみ可能です。
関連項目:
例
次の例では、ドメインDAY_OF_WEEKを作成し、それを列CALENDAR_DATES.DAY_OF_WEEK_ABBRに関連付けます。この列をDOMAIN_DISPLAYに渡すと、各単語の最初の文字が大文字で、残りの文字が小文字で戻されます。また、DOMAIN_DISPLAYは、文字列をドメインにキャストするときにこの形式を戻します。
DOMAIN_DISPLAYへの他のすべてのコールは非ドメイン値を渡すため、NULLを戻します。
CREATE DOMAIN day_of_week AS CHAR(3 CHAR) DISPLAY INITCAP(day_of_week);
CREATE TABLE calendar_dates ( calendar_date DATE, day_of_week_abbr day_of_week );
INSERT INTO calendar_dates
VALUES(DATE'2023-05-01', 'MON'),
(DATE'2023-05-02', 'tue'),
(DATE'2023-05-05', 'fRI');
SELECT day_of_week_abbr,
DOMAIN_DISPLAY(day_of_week_abbr) domain_column,
DOMAIN_DISPLAY(calendar_date) nondomain_column,
DOMAIN_DISPLAY(CAST('MON' AS day_of_week)) domain_value,
DOMAIN_DISPLAY('MON') nondomain_value
FROM calendar_dates;
DAY_OF_WEEK_ABBR DOMAIN_COLUMN NONDOMAIN_COLUMN DOMAIN_VALUE NONDOMAIN_VALUE
---------------- ------------- ---------------- ------------ ---------------
MON Mon <null> Mon <null>
tue Tue <null> Mon <null>
fRI Fri <null> Mon <null> 次の例では、表示式を使用して複数列ドメインCURRENCYを作成します。ORDER_ITEMSの列AMOUNTおよびCURRENCY_CODEがこのドメインに関連付けられています。
問合せでは、domain_cols式のみがドメイン式に従って列を書式設定します。DOMAIN_DISPLAYに対する他のすべてのコールの引数とドメイン列が一致しないため、NULLが戻されます:
CREATE DOMAIN currency AS ( amount AS NUMBER(10, 2) currency_code AS CHAR(3 CHAR) ) DISPLAY CASE currency_code WHEN 'USD' THEN '$' WHEN 'GBP' THEN '£' WHEN 'EUR' THEN '€' WHEN 'JPY' THEN '¥' END || TO_CHAR(amount, '999,999,999.00');
CREATE TABLE order_items ( order_id INTEGER, product_id INTEGER, amount NUMBER(10, 2), currency_code CHAR(3 CHAR), DOMAIN currency(amount, currency_code) );
INSERT INTO order_items
VALUES (1, 1, 9.99, 'USD'),
(2, 2, 1234.56, 'GBP'),
(3, 3, 4321, 'EUR'),
(4, 4, 3141592, 'JPY');
SELECT order_id,
product_id,
DOMAIN_DISPLAY(amount, currency_code) domain_cols,
DOMAIN_DISPLAY(currency_code, amount) domain_cols_wrong_order,
DOMAIN_DISPLAY(order_id, product_id) nondomain_cols,
DOMAIN_DISPLAY(amount) domain_cols_subset
FROM order_items;
ORDER_ID PRODUCT_ID DOMAIN_COLS DOMAIN_COLS_WRONG_ORDER NONDOMAIN_COLS DOMAIN_COLS_SUBSET
---------- ---------- ---------------- ----------------------- -------------- ------------------
1 1 $ 9.99 <null> <null> <null>
2 2 £ 1,234.56 <null> <null> <null>
3 3 € 4,321.00 <null> <null> <null>
4 4 ¥ 3,141,592.00 <null> <null> <null>
