ヘッダーをスキップ
Oracle Database Lite SQLリファレンス
10g(10.2.0)
B19286-02
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

3 SQL関数

この章では、Oracle Database LiteのSQL関数を説明します。この章の内容は次のとおりです。

3.1 SQL関数のタイプ

この項では、様々なタイプのSQL関数をリストします。「SQL関数の概要」に、各関数の説明があります。

SQL関数のタイプ

数値を返す文字関数  
ASCII LENGTH
BIT_LENGTH(「LENGTH」を参照) LENGTHB
CHAR_LENGTH(「LENGTH」を参照) OCTET_LENGTH(「LENGTH」を参照)
INSTR
POSITION
INSTRB


変換関数 その他の関数 グループ関数
CAST
CASE AVG
CONVERT
DATABASE COUNT
TO_CHAR
DECODE
MAX
TO_NUMBER
EXTRACT
MIN
TO_DATE
GREATEST
STDDEV

IFNULL(「CASE」および「NVL」を参照) SUM

INTERVAL
VARIANCE

LEAST


LOCATE


NVL


SUBSTR


USER


3.2 SQL関数の概要

どちらもデータ項目を操作して結果を返すという点で、SQL関数とSQL演算子はよく似ています。SQL関数とSQL演算子の相違点は、SQL関数は引数を取るということです。SQL関数の書式では、関数は0個以上の引数を操作できます。

function(argument1, argument2, ...) alias

予期していたデータ型とは違うデータ型の引数が渡されると、ほとんどの関数が実行前に引数のデータ型を暗黙的に変換します。NULL値が渡されると、ほとんどの関数がNULL値を返します。

SQL関数はSQL文内で、SQLコマンドとともにのみ使用されます。SQL文には、単一行(またはスカラー)関数と集計関数の2つの一般型があります。この2つの相違点は、対象となるデータベース行の数です。単一行関数は問合せ内の単一行に基づく値を返し、集計関数は問合せ内のすべての行に基づく値を返します。

単一行のSQL関数は、選択リスト(GROUP BY句を含むSELECT文以外)およびWHERE句で使用できます。

集計関数は、AVGMINMAXSUMおよびCOUNTset関数です。これらの関数には、GROUP BY関数が使用できる別名を提供する必要があります。

ほとんどの関数にはSQL書式とODBC書式の両方がありますが、この2つは機能的に若干異なる場合があります。

3.2.1 数値関数

数値関数は、数値入力を受け入れて、数値を返します。

3.2.2 文字関数

単一行文字関数は、文字入力を受け入れて、文字値および数値の両方を返すことができます。

3.2.3 数値を返す文字関数

文字関数によっては数値のみを返すものもあります。

3.2.4 日付関数

日付関数は、DATEデータ型の値に対して演算を行います。日付関数は、数を返すMONTHS_BETWEEN関数以外、すべてDATEデータ型の値を返します。

3.2.5 変換関数

変換関数は、値をあるデータ型から別のデータ型へ変換します。一般に、関数名の形式は、datatype TO datatypeになっています。最初のdatatypeが入力のデータ型で、最後のdatatypeが出力のデータ型です。

3.3 SQL関数のアルファベット順のリスト

この項では、Oracle Database LiteのSQL関数をアルファベット順にリストし、それぞれの関数を説明しています。説明には次の項目が含まれます。

3.3.1 ADD_MONTHS

構文

ADD_MONTHS(d, n)

dは、日付データ型の値。

nは、月の数値を表す整数。

用途

指定された日付dを指定された月数nに加えて、結果の日付を返します。dが月の最終日の場合、または結果の月の最終日がdの日付要素よりも小さい場合、ADD_MONTHSは結果の月の最終日を返します。それ以外の場合、ADD_MONTHSdと同じ日付要素を持つ値を返します。

SELECT TO_CHAR(ADD_MONTHS(hiredate,1)),'DD-MM-YYYY' "Next month"FROM emp WHERE ename = 'SMITH'

次の結果を返します。

TO_CHAR(ADD_MONTHS(HIREDATE              Next month
---------------------------------------- ----------
1981-01-17                               DD-MM-YYYY

3.3.2 ASCII

構文

ASCII(char)

用途

charの最初のバイトについて、データベース・キャラクタ・セットにおける10進表現を返します。データベース・キャラクタ・セットが7ビットASCIIの場合、この関数によりASCII値が返されます。

SELECT ASCII('Q') FROM DUAL;

次の結果を返します。

ASCII('Q')
----------
        81

3.3.3 AVG

構文

AVG([DISTINCT | ALL] n)

用途

nの平均値を返します。

例1

SELECT AVG(SAL) FROM EMP;

次の結果を返します。

 AVG(SAL)
---------
  2073.21

例2

SELECT {FN AVG (SAL)} FROM EMP;

次の結果を返します。

{FNAVG(SAL)}
------------
     2073.21

例3

SELECT AVG (DISTINCT DEPTNO) FROM EMP;

次の結果を返します。

AVG(DISTINCTDEPTNO)
-------------------
                 20

例4

SELECT AVG (ALL DEPTNO) FROM EMP;

次の結果を返します。

AVG(ALLDEPTNO)
--------------
        22.142

ODBC関数

{FN AVG ([DISTINCT | ALL] n)}

nは数値列の名前です。

3.3.4 CASE

構文

CASE
WHEN condition 1 THEN result 1
WHEN condition 2 THEN result 2
...
WHEN condition n THEN result n
ELSE result x
END,

用途

表3-1にリストする引数を使用して、条件値を指定します。

表3-1 CASE関数で使用される引数

引数 説明
WHEN 条件句を開始します。
condition 条件を指定します。
THEN 結果句を開始します。
result 関連付けられた条件の結果を指定します。
ELSE 条件句に記述されていない値の結果を指定するオプションの句です。
END ケース文を終了します。

使用上の注意

CASE関数は、選択文または更新文の条件と結果を指定します。CASE関数は、特定の条件に基づいてデータを検索する場合や、条件に基づいて値を更新する場合に使用できます。

SELECT CASE JOB
WHEN 'PRESIDENT' THEN 'The Honorable'
WHEN 'MANAGER' THEN 'The Esteemed'
ELSE 'The good'
END,
ENAME
FROM EMP;

次の結果を返します。

CASEJOBWHEN'PRESI ENAME
----------------- ----------
The Honorable     KING
The Esteemed      BLAKE
The Esteemed      CLARK
The Esteemed      JONES
The good          MARTIN
The good          ALLEN
The good          TURNER
The good          JAMES
The good          WARD
The good          FORD
The good          SMITH
The good          SCOTT
The good          ADAMS
The good          MILLER

14 rows selected.

3.3.5 CAST

構文

SELECT CAST ( <source_operand > AS <data_type > ) FROM DUAL;

用途

表3-2にリストする引数を使用して、あるデータ型のデータを別のデータ型に変換します。

表3-2 CAST関数で使用される引数

引数 説明
<source_operand> 値式またはNULL
<data_type> 対象データのデータ型

使用上の注意

図3-1の表に、ソースのオペランドからデータ型への変換の結果を示します。

図3-1 ソースのオペランドとデータ型の変換結果

ソースのオペランドからデータ型への変換結果
図convert.gifの説明

表3-3に、ソースのオペランドからデータ型への変換結果の定義をリストします。

表3-3 変換結果の定義とソースのオペランド

結果の定義 ソースのオペランド
EN = 真数 D = 日付
C = 固定長または可変長の文字 TS = タイムスタンプ
VC = 可変長文字 DT = 日付時刻
T = 時刻 V = 有効
YM = 年月間隔 R = 制限付きの有効
AN = 概数 X = 無効
FC = 固定長文字

<source_operand>が真数で<data_type>が間隔である場合、間隔には単一の日付時刻フィールドを含みます。

<source_operand>が間隔で<data_type>が真数である場合、間隔には単一の日付時刻フィールドを含みます。

<source_operand>が文字列で<data_type>が文字列を指定する場合、それらの文字範囲は同じです。

<data_type>が数値で、先頭の桁の表示が失われる場合、データ例外、数値が範囲外という例外状況が発生します。

例1

SELECT CAST('0' AS INTEGER) FROM DUAL;

次の結果を返します。

CAST('0'ASINTEGER)
------------------
                 0

例2

SELECT CAST(0 AS REAL) FROM DUAL;

次の結果を返します。

CAST(0ASREAL)
-------------
            0

例3

SELECT CAST(1E0 AS NUMERIC(12, 2)) FROM DUAL;

次の結果を返します。

CAST(1E0ASNUMERIC(12
--------------------
                   1

例4

SELECT CAST(CURRENT_TIMESTAMP AS VARCHAR(30)) FROM DUAL;

次の結果を返します。

CAST(CURRENT_TIMESTAMPASVARCH
------------------------------
1999-04-12 14:53:53

3.3.6 CEIL

構文

CEIL (n)

用途

n以上で最小の整数が返されます。

SELECT CEIL(15.7) "Ceiling" FROM DUAL;

次の結果を返します。

  Ceiling
---------
       16

3.3.7 CHR

構文

CHR (n)

用途

データベース・キャラクタ・セット内のnのバイナリ等価を持つ文字を返します。

SELECT CHR(68)||CHR(79)||CHR(71) "Dog" FROM DUAL;

次の結果を返します。

Dog
---
DOG

3.3.8 CONCAT

構文

CONCAT(char1, char2)

または

CHAR1 || CHAR2

用途

char2と連結されたchar1を返します。char1およびchar2は文字列引数です。この関数は連結演算子(||)と同じです。

この例ではネストを使用して3つの文字列を連結します。

SELECT CONCAT( CONCAT(ename, ' is a '), job) "Job"
FROM emp
WHERE empno = 7900;

次の結果を返します。

Job
-------------------------
JAMES      is a CLERK

ODBC関数

{FN CONCAT (char1, char2)}

3.3.9 CONVERT

構文

{ fn CONVERT(value_exp, data_type) }

用途

文字列をあるキャラクタ・セットから別のキャラクタ・セットに変換します。

value_exp引数は、変換される値です。

data_type引数は、charが変換される先のキャラクタ・セットの名前です。

使用上の注意

表3-4に、一般的なキャラクタ・セットをリストします。

表3-4 CONVERT関数で使用される一般的なキャラクタ・セット

一般的なキャラクタ・セット
US7ASCII WE8ISO8859P1
WE8DEC HP West European Laserjet 8ビット・キャラクタ・セット
WE8HP DEC French 7ビット・キャラクタ・セット
F7DEC IBM West European EBCDIC Code Page 500
WE8EBCDIC500 IBM PC Code Page 850 ISO 8859-1 West European 8ビット・キャラクタ・セット
WE8PC850 ISO 8859-1 West European 8ビット・キャラクタ・セット

SELECT {fn CONVERT('Groß', 'US7ASCII') }
"Conversion" FROM DUAL;

次の結果を返します。

conversi
--------
Groß

3.3.10 COUNT

構文

COUNT([* | [DISTINCT | ALL] expr})

用途

問合せ内の行数を返します。

例1

SELECT COUNT(*) "Total" FROM emp;

次の結果を返します。

Total
----------
14

例2

SELECT COUNT(job) "Count" FROM emp;

次の結果を返します。

Count
----------
14

例3

SELECT COUNT(DISTINCT job) "Jobs" FROM emp;

次の結果を返します。

Jobs
----------
5

例4

SELECT COUNT (ALL JOB) FROM EMP;

次の結果を返します。

COUNT(ALLJOB)
-------------

3.3.11 CURDATE

構文

{ fn CURDATE ( <value_expression > ) }

用途

現在の日付を返します。

使用上の注意

expr(式)を指定すると、この関数はexprがNULLでない行を返します。全行数またはexprで指定した値の行数のみをカウントします。

アスタリスク(*)を指定した場合、この関数は重複行およびNULL行を含むすべての行数を返します。

例1

SELECT {fn CURDATE()} FROM DUAL;

次の結果を返します。

{FNCURDATE
-----------
1999-04-12

例2

SELECT {fn WEEK({fn CURDATE()})} FROM DUAL;

次の結果を返します。

{FNWEEK({FNCURDATE()})}
-----------------------
                     16

3.3.12 CURRENT_DATE

構文

CURRENT_DATE

用途

現在の日付を返します。

SELECT CURRENT_DATE FROM DUAL;

次の結果を返します。

CURRENT_DATE
------------
1999-04-12

ODBC関数

{fn CURDATE()}

3.3.13 CURRENT_TIME

構文

CURRENT_TIME

用途

現在の時刻を返します。

SELECT CURRENT_TIME FROM DUAL;

次の結果を返します。

CURRENT_T
---------
15:54:18

ODBC関数

{fn CURTIME()}

3.3.14 CURRENT_TIMESTAMP

構文

CURRENT_TIMESTAMP

用途

現在のローカルの日付と時刻をタイムスタンプ値として返しますが、デフォルトでは現在のローカルの日付のみを表示します。現在のローカルの時刻情報は、CURRENT_TIMESTAMPTO_CHAR関数の値として使用し、時刻書式を含めることで表示できます。詳細は、例2を参照してください。

例1

SELECT CURRENT_TIMESTAMP FROM DUAL;

次の結果を返します。

CURRENT_TI
---------
1999-04-12

例2

SELECT TO_CHAR (CURRENT_TIMESTAMP, 'HH24:MM:SS, Day, Month, DD, YYYY')FROM DUAL;

次の結果を返します。

TO_CHAR(CURRENT_TIMESTAMP
----------------------------------------
18:04:05, Tuesday  , April    , 06, 1999

ODBC関数

{fn CURTIME()}

3.3.15 CURTIME

構文

{ fn CURTIME ( <value_expression > ) }

用途

現在の時刻を返します。

例1

SELECT {fn CURTIME()} FROM DUAL;

次の結果を返します。

{FNCURTIM
---------
11:09:59

例2

SELECT {fn HOUR({fn CURTIME()})} FROM DUAL;

次の結果を返します。

{FNHOUR({FNCURTIME()})}
-----------------------
                     11

3.3.16 DATABASE

構文

{ fn DATABASE () }

用途

データベースの名前を指定します。ODBC使用時は、DATABASE関数は現行のデフォルト・データベース・ファイルを.ODB拡張子なしで返します。

使用上の注意

データベース名関数は、オプションSQL_CURRENT_QUALIFIERを指定したSQLGetConnectOption()と同じ値を返します。

次の例では、デフォルト・データベースに接続されたユーザーの結果を返します。

SELECT {fn DATABASE () } FROM DUAL;

次の結果を返します。

{FNDATABASE()}
--------------
POLITE

3.3.17 DAYNAME

構文

{ fn DAYNAME (date_expr) }

用途

曜日を文字列として返します。

SELECT {fn dayname({fn curdate()})} from dual;

当日の曜日を文字列として返します。

3.3.18 DAYOFMONTH

構文

{ fn DAYOFMONTH ( <value_expression > ) }

用途

表3-5にリストする引数を使用して、月間通算日を整数として返します。

表3-5 DAYOFMONTH関数で使用される引数

引数 説明
<value_expression> 月間通算日を計算する日付。結果は1〜31の間で、1が1日を表します。

例1

SELECT {fn DAYOFMONTH ({fn CURDATE()})} FROM DUAL;

次の結果を返します。

{FNDAYOFMONTH({FNCURDATE()})
----------------------------
                          12

例2

SELECT {fn DAYOFMONTH('1997-07-16')} "DayOfMonth" FROM DUAL;

次の結果を返します。

DayOfMonth
----------
        16

3.3.19 DAYOFWEEK

構文

{ fn DAYOFWEEK ( <value_expression > ) }

用途

表3-6にリストする引数を使用して、曜日を整数として返します。

表3-6 DAYOFWEEK関数で使用される引数

引数 説明
<value_expression> 曜日を計算する日付。結果は1〜7で、1が日曜を表します。

例1

SELECT {fn DAYOFWEEK ({fn CURDATE()})} FROM DUAL;

次の結果を返します。

{FNDAYOFWEEK({FNCURDATE()})}
----------------------------
                           2

例2

SELECT {fn DAYOFWEEK('1997-07-16')} "DayOfWeek" FROM DUAL;

次の結果を返します。

DayOfWeek
------------------
4

3.3.20 DAYOFYEAR

構文

{ fn DAYOFYEAR ( <value_expression > ) }

用途

表3-7にリストする引数を使用して、年間通算日を整数として返します。

表3-7 DAYOFYEAR関数で使用される引数

引数 説明
<value_expression> 年間通算日を計算する日付。結果は1〜366です。

例1

SELECT {fn DAYOFYEAR ({fn CURDATE()})} FROM DUAL;

次の結果を返します。

{FNDAYOFYEAR({FNCURDATE()})}
----------------------------
                         102

例2

SELECT {fn DAYOFYEAR('1997-07-16')} "DAYOFYEAR" FROM DUAL;

次の結果を返します。

DayOfYear
---------
197

3.3.21 DECODE

構文

DECODE (expr, search, result [, search, result...] [,default])

用途

式の値を検索し、それを指定された結果(result)として評価します。

使用上の注意

式を評価するために、Oracle Database Liteは、式を各検索値(search)と1つずつ比較します。式と等しい検索値がある場合、Oracle Database Liteは、その検索値に対応する結果を返します。一致するものがないと、Oracle Database Liteはデフォルトを返すか、デフォルトが省略されている場合は、NULLを返します。式および検索値に文字データが含まれている場合、Oracle Database Liteは非空白埋め比較セマンティクスを使用して、それらを比較します。

検索(search)、結果(result)およびデフォルト(default)の各値を式から導出できます。Oracle Database Liteは、すべての検索値を評価してから式と比較するのではなく、式と比較する直前になってからそれぞれの検索値を評価します。したがって、Oracle Database Liteは、前の検索が式と等しい場合、検索を評価しません。

Oracle Database Liteは、比較の前に、式と各検索値を最初の検索値のデータ型に自動的に変換します。Oracle Database Liteは、戻り値を最初の結果と同じデータ型に自動的に変換します。最初の結果のデータ型がCHARの場合または最初の結果がNULLの場合は、戻り値をデータ型VARCHAR2に変換します。

DECODE式の中では、Oracle Database Liteは、2つのNULL値を等価であるとみなします。式がNULLの場合、Oracle Database Liteは、同様にNULLである最初の検索の結果を返します。

式、検索、結果およびデフォルトも含めたDECODE式内のコンポーネントの最大数は、255です。

例1

次の式は、DEPT表内のDEPTNO列をデコードします。式は、DEPTNOが10の場合は「ACCOUNTING」、DEPTNOが20の場合は「RESEARCH」と評価されていきます。DEPTNOが10、20、30または40でないと、式は「NONE」を返します。

DECODE (deptno, 10, 'ACCOUNTING',
20, 'RESEARCH',
30, 'SALES',
40, 'OPERATIONS',
'NONE')

例2

次の例は、SELECT文の中でDECODE句を使用します。

SELECT DECODE (deptno, 10, 'ACCOUNTING',
20, 'RESEARCH',
30, 'SALES',
40, 'OPERATIONS',
'NONE')
FROM DEPT;

次の結果を返します。

DECODE(DEP
----------
ACCOUNTING
RESEARCH
SALES
OPERATIONS

3.3.22 EXTRACT

構文

EXTRACT (extract-field FROM extract source)

用途

extract-sourcei部分から、情報を返します。extract-source引数は、日付時刻または間隔の式を含みます。extract-field引数は、YEARMONTHDAYHOURMINUTEまたはSECONDのキーワードのいずれかを含みます。

戻り値の精度は、実装内で定義されます。SECONDが指定されていないと、スケールは0です。SECONDが指定されていると、スケールは、extract-sourceフィールドの秒の小数部の精度以上になります。

例1

SELECT EXTRACT (DAY FROM '06-15-1966') FROM DUAL;

次の結果を返します。

EXTRACT(DAY
-----------
         15

例2

SELECT  EXTRACT (YEAR FROM {FN CURDATE()}) FROM DUAL;

次の結果を返します。

EXTRACT(YEAR
------------
        1999

3.3.23 FLOOR

構文

FLOOR (n)

用途

n以下で最大の整数が返されます。

SELECT FLOOR(15.7) "Floor" FROM DUAL;

次の結果を返します。

    Floor
---------
       15

3.3.24 GREATEST

構文

GREATEST(expr [,expr] ...)

用途

exprs(式)のリストから、最大値を返します。2番目以降のexprsはすべて、比較の前に、最初のexprsのデータ型に暗黙的に変換されます。Oracle Database Liteは、非空白埋め比較セマンティクスを使用して、exprsを比較します。文字比較は、データベース・キャラクタ・セットの文字の値に基づきます。文字の値が高い文字の方がもう1つの文字より大きいといえます。この関数によって返された値が文字データの場合、データ型は常にVARCHAR2になります。

SELECT GREATEST('HARRY','HARRIOT','HAROLD') "GREATEST" FROM DUAL;

次の結果を返します。

GREATEST
--------
HARRY

3.3.25 HOUR

構文

HOUR (time_exp)

用途

時間を0〜23までの整数値として返します。

例1

SELECT {FN HOUR ('14:03:01')} FROM DUAL;

次の結果を返します。

{FNHOUR('14:03:01')}
--------------------
                  14

例2

SELECT {fn HOUR({fn CURTIME()})} FROM DUAL;

次の結果を返します。

{FNHOUR({FNCURTIME()})}
-----------------------
                     11

3.3.26 INITCAP

構文

INITCAP(char)

用途

各単語の最初の文字を大文字、残りの文字を小文字にして、charを返します。単語は空白か、英数字でない文字で区切られます。

SELECT INITCAP('the soap') "Capitals" FROM DUAL;

次の結果を返します。

Capitals
--------
The Soap

3.3.27 INSTR

構文

INSTR(char1, char2, [, n [, m ]])

用途

char1n番目の文字からchar2の探索を開始し、m番目に出現した位置を返します。mおよびnは数値引数です。最初に出現した文字のchar1の中の位置を返します。

使用上の注意

nが負の場合、INSTRchar1の終わりから逆方向にカウントおよび検索します。mの値は正になります。nm両方のデフォルト値は1で、この設定によって、INSTRchar2の最初の出現に対して、char1の最初の文字で探索を開始します。戻り値は、nの値にかかわらず、char1の先頭からの相対文字数で表されます。検索が失敗すると(char2char1n番目の文字の後にm回現れない場合)、戻り値は0になります。詳細は、POSITION関数の構文を参照してください。

SELECT INSTR('CORPORATE FLOOR','OR',3,2) "Instring" FROM DUAL;

次の結果を返します。

 Instring
---------
       14

3.3.28 INSTRB

構文

INSTRB(char1, char2, [, n [, m ]])

用途

char1nバイト目の文字からchar2の探索を開始し、m番目に出現した位置を返します。mおよびnは数値引数です。最初に出現した1バイト目のchar1の中の位置を返します。nおよび関数の戻り値が文字ではなくバイトで表示されていることを除き、INSTRと同じです。シングルバイトのデータベース・キャラクタ・セットの場合、INSTRBは、INSTRと同じです。

SELECT INSTRB('CORPORATE FLOOR','OR',5,2) "Instring in bytes" FROM DUAL;

次の結果を返します。

Instring in bytes
-----------------
               14

3.3.29 INTERVAL

構文

INTERVAL (datetime values)

用途

1つのdatetimeから別のdatetimeを差し引いて、結果を生成します。1つの間隔に別の間隔を追加したり差し引いたりした結果は常に間隔になります。間隔は、数値定数で乗除できます。

例1

SELECT CURRENT_DATE - INTERVAL '8' MONTH FROM DUAL;

次の結果を返します。

CURRENT_DATE-INTERVAL
---------------------
1998-08-09

例2

SELECT TO_CHAR (INTERVAL '6' DAY * 3) FROM DUAL;

次の結果を返します。

TO_CHAR(INTERVAL'6'DAY*3)
-------------------------
18

3.3.30 LAST_DAY

構文

LAST_DAY(d)

用途

日付dが発生する月の最後の日付を返します。

使用上の注意

この関数は、現在の月の残りの日数を判断する場合に使用できます。

例1

SELECT LAST_DAY (SYSDATE) FROM DUAL;

次の結果を返します。

LAST_DAY
----------
1999-04-30

例2

SELECT SYSDATE,
LAST_DAY(SYSDATE) "Last",
LAST_DAY(SYSDATE) - SYSDATE "Days Left"
FROM DUAL;

次の結果を返します。

{FNNOW()}   Last        Days Left
----------  ----------  ---------
1999-04-12  1999-04-30         18

3.3.31 LEAST

構文

LEAST(expr [,expr] ...)

用途

exprs(式)のリストから、最小値を返します。2番目以降のexprsはすべて、比較の前に、最初のexprsのデータ型に暗黙的に変換されます。Oracle Database Liteは、非空白埋め比較セマンティクスを使用して、exprsを比較します。文字比較は、データベース・キャラクタ・セットの文字の値に基づきます。文字の値が低い場合、その文字はもう1つの文字より小さいといえます。この関数によって返された値が文字データの場合、データ型は常にVARCHAR2になります。

SELECT LEAST('HARRY','HARRIOT','HAROLD') "LEAST" FROM DUAL;

次の結果を返します。

LEAST
-------
HAROLD

3.3.32 LENGTH

構文

LENGTH (char)
{fn LENGTH(char)}
BIT_LENGTH (char)
CHAR_LENGTH (char)
OCTET_LENGTH (char)

LENGTHは、charの文字数を返します。BIT_LENGTHCHAR_LENGTHおよびOCTET_LENGTHは、charの長さをそれぞれビット数、文字数およびオクテット数で返します。

用途

文字列引数charの長さを返します。charのデータ型がCHARの場合、長さには後続する空白がすべて含まれます。charがNULLの場合は、NULLが返されます。

使用上の注意

BIT_LENGTHCHAR_LENGTHおよびOCTET_LENGTHはSQL-92の関数です。CHAR_LENGTHLENGTHと同じで、OCTET_LENGTHLENGTHBと同じです。

SELECT LENGTH('CANDIDE') "Length in characters" FROM DUAL;

次の結果を返します。

Length in characters
--------------------
                   7

3.3.33 LENGTHB

構文

LENGTHB(char)
{fn LENGTHB(char)}

用途

文字列引数charのバイト数を返します。charがNULLの場合は、NULLが返されます。シングルバイトのデータベース・キャラクタ・セットの場合、LENGTHBは、LENGTHと同じです。

SELECT LENGTHB('CANDIDE') "Length in bytes" FROM DUAL;

次の結果を返します。

Length in bytes
---------------
              7

3.3.34 LOCATE

構文

LOCATE (string_exp1, string_exp2[,start])

用途

string_exp2の最初の文字位置以降で、string_exp1が最初に出現する開始位置を返します。検索の開始位置をstring_exp2の最初の文字位置ではなく、start 値で指定できます。

例1

次の例は、EMP表のすべての行に対して、文字列式「TURNER」内の文字「R」の開始位置を選択します。

SELECT {FN LOCATE ('R', 'TURNER')} FROM EMP ENAME;

次の結果を返します。

{FNLOCATE('R'
-------------
            3
            3
            3
            3
            3
            3
            3
            3
            3
            3
            3
            3
            3
            3

14 rows selected.

例2

次の例は、文字列式「TURNER」内の文字「R」の開始位置を選択し、検索を「TURNER」内の4番目の文字から開始します。例は、EMP表のすべての列で検出されたすべての「TURNER」に対する結果を表示しています。

SELECT {FN LOCATE ('R', 'TURNER',4)} FROM EMP ENAME;

次の結果を返します。

{FNLOCATE('R'
-------------
            6
            6
            6
            6
            6
            6
            6
            6
            6
            6
            6
            6
            6
            6

14 rows selected.

3.3.35 LOWER

構文

LOWER(char)

用途

文字列引数charの文字をすべて小文字にして返します。戻り値のデータ型はcharのデータ型と同じで、CHARまたはVARCHAR2のいずれかです。

SELECT LOWER('LOWER') FROM DUAL;

次の結果を返します。

LOWER
-----
lower

ODBC関数

{fn LCASE (char)}

3.3.36 LPAD

構文

LPAD(char1,n [,char2])

用途

char1の左にchar2で指定した文字を連続的に埋め込んでn桁にして返します。char2は単一の空白にデフォルト設定されています。char1nよりも長い場合、関数はchar1nに収まる部分を返します。

引数nは、端末画面に表示される際の戻り値の合計長です。ほとんどのキャラクタ・セットで、これは戻り値の文字の数でもあります。ただし、マルチバイト・キャラクタ・セットの中には、文字列の表示長が文字列内の文字数によって異なるものがあります。

SELECT LPAD('Page1',15,'*.') "LPAD example" FROM DUAL;

次の結果を返します。

LPAD example
-----------------
*.*.*.*.*.Page1

3.3.37 LTRIM

構文

LTRIM(char [, set])

用途

setに指定されたすべての文字をcharの左側から順に取り除きます。setのデフォルト値は単一の空白です。

SELECT LTRIM ('xyxXxyLAST WORD','xy') "LTRIM example" FROM DUAL;

次の結果を返します。

LTRIM example
---------------
XxyLAST WORD

ODBC関数

{fn LTRIM (char) }      (trims leading blanks)

3.3.38 MAX

構文

MAX([DISTINCT | ALL] expr)

用途

引数exprで指定されている式の最大値を返します。

SELECT MAX(SAL) FROM EMP;

次の結果を返します。

MAX(SAL)
---------
5000

3.3.39 MIN

構文

MIN([DISTINCT | ALL] expr)

用途

引数exprで指定されている式の最小値を返します。

SELECT MIN(SAL), MAX(SAL) FROM EMP;

次の結果を返します。

 MIN(SAL)
---------
      800

3.3.40 MINUTE

構文

MINUTE (time_exp)

用途

分を0〜59までの整数値として返します。

例1

SELECT {FN MINUTE ('14:03:01')} FROM DUAL;

次の結果を返します。

{FNMINUTE('14:03:01')}
----------------------
                     3

例2

SELECT {fn MINUTE({fn CURTIME()})} FROM DUAL;

次の結果を返します。

{FNMINUTE({FNCURTIME()})}
-------------------------
                       23

3.3.41 MOD

構文

MOD (m,n)

用途

mnで除算した余りを返します。nが0の場合は、mを返します。

SELECT MOD (26,11) "ABLOMOV" FROM DUAL;

次の結果を返します。

  ABLOMOV
---------
        4

3.3.42 MONTH

構文

MONTH (date_exp)

用途

月を1〜12までの整数値として返します。

例1

SELECT {FN MONTH ('06-15-1966')} FROM DUAL;

次の結果を返します。

{FNMONTH('06-15-1966')}
-----------------------
                      6

例2

SELECT {fn MONTH({fn CURDATE()})} FROM DUAL;

次の結果を返します。

{FNMONTH({FNCURDATE()})}
------------------------
                       4

3.3.43 MONTHNAME

構文

{ fn MONTHNAME (date_exp) }

用途

月の名前を文字列として返します。

select {fn monthname({fn curdate()})} from dual;

現在の月を文字列として返します。

3.3.44 MONTHS_BETWEEN

構文

MONTHS_BETWEEN(d1, d2 )

用途

日付d1d2との間の月数を返します。d1d2より遅い場合結果は正になり、早い場合は負になります。d1d2が、同じ日またはいずれも月の最後の日の場合、結果は常に整数です。そうでない場合、Oracle Database Liteは、1か月が31日として結果の端数部分を計算し、d1d2の時間コンポーネント内の相違とみなします。

SELECT MONTHS_BETWEEN(
TO_DATE('02-02-1995','MM-DD-YYYY'),
TO_DATE('01-01-1995','MM-DD-YYYY') ) "Months"
FROM DUAL;

次の結果を返します。

   Months
---------
1.0322581

3.3.45 NEXT_DAY

構文

NEXT_DAY(d, char)

用途

日付dよりも後で、charで指定された曜日の最初の日付を返します。引数charは、ユーザーのセッションの日付言語で記述された曜日を指定する必要があります。戻り値は引数dと同じ時間、分および秒のコンポーネントを持っています。

SELECT NEXT_DAY('15-MAR-92','TUESDAY') "NEXT DAY" FROM DUAL;

次の結果を返します。

NEXT DAY
----------
1992-03-17

3.3.46 NOW

構文

NOW

用途

現在のローカルの日付と時刻をタイムスタンプ値として返しますが、デフォルトでは現在のローカルの日付のみを表示します。現在のローカルの時刻情報は、NOWTO_CHAR関数の値として使用し、時刻書式を含めることで表示できます。詳細は、例2を参照してください。

例1

SELECT {FN NOW()} FROM DUAL;

次の結果を返します。

{FNNOW()}
----------
1999-04-07

例2

SELECT TO_CHAR ({fn NOW ('YYYY, Month, DD, HH24:MM:SS')}) FROM DUAL;

次の結果を返します。

TO_CHAR({FNNOW('YYYY
----------------------------------------
1999-04-07 12:55:31

3.3.47 NVL

構文

NVL(expr1, expr2)

用途

expr1がNULLの場合、expr2が返されます。expr1がNULLでない場合、expr1が返されます。引数expr1およびexpr2は同じデータ型にしてください。

例1

SELECT ename, NVL(TO_CHAR(COMM),'NOT APPLICABLE') "COMMISSION"
FROM emp
WHERE deptno = 30;

次の結果を返します。

ENAME      COMMISSION
---------- ----------------
BLAKE      NOT APPLICABLE
MARTIN     1400.00
ALLEN      300.00
TURNER     .00
JAMES      NOT APPLICABLE
WARD       500.00

6 rows selected.

例2

SELECT {fn IFNULL(Emp.Ename, 'Unknown')},
NVL (Emp.comm, 0) FROM EMP;

次の結果を返します。

{FNIFNULL( 'UNKNOWN')}
---------- -----------
KING                 0
BLAKE                0
CLARK                0
JONES                0
MARTIN            1400
ALLEN              300
TURNER               0
JAMES                0
WARD               500
FORD                 0
SMITH                0
SCOTT                0
ADAMS                0
MILLER               0

14 rows selected.

例3

SELECT sal+NVL(comm, 0) FROM EMP;

次の結果を返します。

SAL+NVL(COMM
------------
        5000
        2850
        2450
        2975
        2650
        1900
        1500
         950
        1750
        3000
         800
        3000
        1100
        1300

14 rows selected.

ODBC関数

{fn IFNULL (expr1, expr2)}

3.3.48 POSITION

構文

POSITION ( <substring_value_expression>
                IN <value_expression> )

表3-8に、POSITION関数の引数をリストします。

表3-8 POSITION関数で使用される引数

引数 説明
<value_expression> 検索対象のソース文字列
<substring_value_expression> 検索される副文字列
<start_len_cnt> 検索の開始位置

用途

文字列内で副文字列の最初に出現する開始位置を返します。

使用上の注意

<substring_value_expression>の長さが0の場合、結果はNULLとなります。<substring_value_expression>が<value_expression>内で発生した場合、結果は<substring_value_expression>の最初の文字位置です。そうでない場合は、結果は0です。<start_len_cnt>が省略された場合、関数は検索を1の位置から開始します。詳細は、「INSTR」および「INSTRB」関数を参照してください。

SELECT POSITION ('CAT' IN 'CATCH') FROM DUAL;

次の結果を返します。

POSITION('CAT'IN'CATCH')
------------------------
                       1

ODBC関数

{fn LOCATE ( <substring_value_expression> ,
  <value_expression>[, <start_len_cnt> ] ) }

3.3.49 QUARTER

構文

{ fn QUARTER ( <value_expression> ) }

表3-9に、QUARTER関数の引数をリストします。

表3-9 QUARTER関数で使用される引数

引数 説明
<value_expression> 四半期を計算する日付。結果は1〜4の間で、1が1月1日〜3月31日までを表します。

用途

指定した日が含まれる四半期を整数として返します。

SELECT {fn QUARTER ({fn CURDATE()})} FROM DUAL;

次の結果を返します。

{FNQUARTER({FNCURDATE()})}
--------------------------
                         2

3.3.50 REPLACE

構文

REPLACE(char, search_string [, replacement_string])

用途

replacement_stringsearch_stringをすべて置換してcharを返します。charsearch_stringおよびreplacement_stringは文字列引数です。

使用上の注意

replacement_stringを指定しない場合またはNULLの場合は、search_stringがすべて取り除かれます。search_stringがNULLの場合は、charが返されます。この関数は、TRANSLATE機能を拡張したものです。TRANSLATEは1文字単位で置換します。REPLACEでは、文字列を別の文字列で置き換えたり、文字列を削除できます。

SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;

次の結果を返します。

Changes
---------------
BLACK and BLUE

3.3.51 ROUND - 日付関数

構文

ROUND(d [,fmt])

表3-10に、ROUND(およびTRUNC)日付関数と使用する書式モデル、および日付が四捨五入される単位をリストします。デフォルト・モデル「DD」は午前0時で切り上げられた日付を返します。

表3-10 ROUND日付関数と書式モデル

書式モデル 丸めの単位
CCまたはSCC 世紀
YYYYSYYYY

YEARSYEAR

YYYYYY

年(7月1日で切り上げ)
IYYYIYYIYI ISO年度
Q 四半期(四半期内の2か月目の16日で切り上げ)
MONTHMONMMRM 月(16日以降は切り上げ)
WW 年の最初の日と同じ曜日
IW ISO年度の最初の日と同じ曜日
W 月の最初の日と同じ曜日
DDDDDJ
DAYDYD 開始曜日
HHHH12HH24 時間
MI

用途

dを書式モデルfmtで指定した単位に丸めて返します。fmtを指定しないと、dは最も近い日に丸められます。

SELECT ROUND(TO_DATE('27-OCT-92'),'YEAR')
"FIRST OF THE YEAR" FROM DUAL;

次の結果を返します。

FIRST OF
---------
1993-01-0

3.3.52 ROUND - 数値関数

構文

ROUND(n [,m ])

用途

nを、小数点以下m桁で丸めた結果を返します。mが省略されると、0が置かれます。mを負にして、小数点以上の桁で丸めることができます。mは整数にする必要があります。

例1

SELECT ROUND (54.339, 2) FROM DUAL;

次の結果を返します。

ROUND(54.339
------------
54.34

3.3.53 RPAD

構文

RPAD(char1,n [,char2 ])

用途

char1の右にchar2で指定した文字を連続的に埋め込んでn桁にして返します。char2は単一の空白にデフォルト設定されます。char1nよりも長い場合、関数はchar1nに収まる部分を返します。

引数nは、端末画面に表示される際の戻り値の合計長です。ほとんどのキャラクタ・セットで、これは戻り値の文字の数でもあります。ただし、マルチバイト・キャラクタ・セットの中には、文字列の表示長が文字列内の文字数によって異なるものがあります。

SELECT RPAD('ename',12,'ab') "RPAD example"
FROM emp
WHERE ename = 'TURNER';

次の結果を返します。

RPAD example
-------------
enameabababa

3.3.54 RTRIM

構文

RTRIM(char [,set])

用途

setに指定されたすべての文字をcharの右側から順に取り除き、charを返します。このデフォルト値は単一の空白です。

例1

SELECT RTRIM ('TURNERyxXxy', 'xy') "RTRIM example" FROM DUAL;

次の結果を返します。

RTRIM examp
-----------
TURNERyxX

例2

SELECT {fn RTRIM ('TURNERyxXxy', 'xy')} FROM DUAL;

次の結果を返します。

{{FNRTRIM('T
-----------
TURNERyxX

ODBC関数

{fn RTRIM (char)}    (trims leading blanks)

3.3.55 SECOND

構文

SECOND (time_exp)

用途

秒を0〜59までの整数値として返します。

例1

SELECT {FN SECOND ('14:03:01')} FROM DUAL;

次の結果を返します。

{FNSECOND('14:03:01')}
----------------------
                     1

例2

SELECT {fn SECOND({fn CURTIME()})} FROM DUAL;

次の結果を返します。

{FNSECOND({FNCURTIME()})}
-------------------------
                       59

3.3.56 STDDEV

構文

STDDEV([DISTINCT|ALL] x)

用途

数値として、xの標準偏差を返します。Oracle Database Liteは、標準偏差をVARIANCEグループ関数のために定義された分散の平方根として計算します。

SELECT STDDEV(sal) "Deviation" FROM emp;

次の結果を返します。

Deviation
---------
1182.5032

3.3.57 SUBSTR

構文

SUBSTR(char, m [, n ])

用途

charm番目の文字で始まる、長さn文字の文字列を抜き出して返します。

使用上の注意

mが正の場合、SUBSTRcharの先頭から数えて最初の文字を検索します。mが負の場合、SUBSTRcharの終わりから逆方向に数えます。値mは0にはできません。nが省略されると、SUBSTRcharの終わりまでのすべての文字を返します。nに1未満の値は指定できません。

SELECT SUBSTR('ABCDEFG',3,4) "Subs" FROM DUAL;

次の結果を返します。

Subs
----
CDEF

3.3.58 SUBSTRB

構文

SUBSTRB(char, m [,n])

用途

文字列引数charmバイト目の文字で始まる、長さnバイトの文字列を抜き出して返します。引数mnを文字数ではなくバイト数で指定することを除くと、SUBSTRと同じです。シングルバイトのデータベース・キャラクタ・セットの場合、SUBSTRBは、SUBSTRと同じです。

SELECT SUBSTRB('ABCDEFG',5,4) "Substring with bytes" FROM DUAL;

次の結果を返します。

Substring with bytes
--------------------
EFG

3.3.59 SUM

構文

SUM([DISTINCT | ALL] n)

用途

nの値の合計値を返します。

SELECT deptno, SUM(sal) TotalSalary FROM emp GROUP BY deptno;

次の結果を返します。

   DEPTNO TOTALSALARY
--------- -----------
       10        8750
       20       10875
       30        9400

3.3.60 SYSDATE

構文

SYSDATE

用途

現在の日付と時刻を返します。引数は必要ありません。

使用上の注意

この関数はOracle Database Lite DATA型列の条件としては使用できません。時刻はTIME列の中でのみ、また日付と時刻はTIMESTAMP列でのみ使用できます。

SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') NOW FROM DUAL;

次の結果を返します。

NOW
-------------------
04-12-1999 19:13:48

3.3.61 TIMESTAMPADD

構文

{fn TIMESTAMPADD (<interval>, <value_exp1 >, <value_exp2 >)}
<value_exp1 > + <value_exp2 >

表3-11に、TIMESTAMPADD関数の引数をリストします。

表3-11 TIMESTAMPADD関数で使用される引数

引数 説明
<interval> 2番目のオペランド<value_exp1>の単位を指定します。次のキーワードが間隔の有効値です。

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

<value_exp1> 整数。
<value_exp2> タイムスタンプ。
<value_expression> オペランド。

用途

カレント・タイムスタンプに日付と時刻値を加算します。

次の例は、1999-04-13のカレント・タイムスタンプに1日を加算します。

SELECT {fn TIMESTAMPADD (SQL_TSI_DAY, 1, {fn NOW()})} FROM DUAL;

次の結果を返します。

{FNTIMESTA
----------
1999-04-14

3.3.62 TIMESTAMPDIFF

構文

{fn TIMESTAMPDIFF (<interval>, <value_exp1 >, <value_exp2 >)}
<value_expression > - <value_expression >

表3-12に、TIMESTAMPDIFF関数の引数をリストします。

表3-12 TIMESTAMPDIFF関数で使用される引数

引数 説明
<interval> 2番目のオペランド<value_exp1>の単位を指定します。次のキーワードが間隔の有効値です。

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

<value_exp1> 整数。
<value_exp2> タイムスタンプ。
<value_expression> オペランド。

用途

指定した間隔を使用して、2つのタイムスタンプ値の差を計算します。

例1

SELECT {fn TIMESTAMPDIFF (SQL_TSI_DAY, {fn CURDATE()}, '1998-12-09')} FROM DUAL;

次の結果を返します。

{FNTIMESTAMPDIFF(SQL_TSI_DAY
----------------------------
                        -125

例2

SELECT ENAME, {fn TIMESTAMPDIFF (SQL_TSI_YEAR, {fn CURDATE()},HIREDATE)} FROM EMP;

次の結果を返します。

ENAME      {FNTIMESTAMPDIFF(SQL_TSI_YEA
---------- ----------------------------
KING                                -17
BLAKE                               -17
CLARK                               -17
JONES                               -18
MARTIN                              -17
ALLEN                               -18
TURNER                              -17
JAMES                               -17
WARD                                -18
FORD                                -17
SMITH                               -18
SCOTT                               -16
ADAMS                               -16
MILLER                              -17

14 rows selected.

3.3.63 TO_CHAR

日付の場合の構文

TO_CHAR(d [, fmt])

数値の場合の構文

TO_CHAR(n [, fmt])

用途

表3-13にリストする引数とともにオプションの書式fmtを使用して、日付または数値をVARCHAR2データ型に変換します。

表3-13 TO_CHAR関数で使用される引数

引数 説明
d 日付列またはSYSDATE
fmt フォーマット文字列
n 数値列またはリテラル

使用上の注意

  • fmtを指定しない場合、引数dまたはnは、VARCHAR2値に変換されます。日付の場合、引数dはデフォルトの日付書式で返されます。数値の場合、引数nは数値の有効桁に適切な長さの値に変換されます。

  • TO_CHARへの引数として使用する場合、日付リテラルはDATEキーワードの後に続けてください。

POLITE.INIファイル内にNLS_DATE_FORMATパラメータを設定して、コンピュータ上のすべてのデータベースのデフォルトの日付書式を指定することができます。POLITE.INIファイル内のNLS_DATE_FORMATパラメータの設定の詳細は、『Oracle Database Lite管理およびデプロイメント・ガイド』を参照してください。

SELECT TO_CHAR (SYSDATE, 'Day, Month, DD, YYYY')"TO_CHAR example" FROM DUAL;

次の結果を返します。

TO_CHAR example
--------------------------------
Saturday , May      , 22, 1999

3.3.64 TO_DATE

構文

TO_DATE(char [, fmt ])

用途

文字列引数charを、DATEデータ型の値に変換します。fmt引数は、charの書式を指定する日付書式です。

SELECT TO_DATE('January 26, 1996, 12:38 A.M.', 'Month dd YYYY HH:MI A.M.') FROM DUAL;

次の結果を返します。

TO_CHAR(TO_DATE('JANUARY26
----------------------------------------
1996-01-26 12:38:00

3.3.65 TO_NUMBER

構文

TO_NUMBER(char [, fmt ])

用途

オプションの書式モデルfmtで指定された書式の数値を含む文字列引数charを、NUMBERデータ型の戻り値に変換します。

使用上の注意

  • 日付書式および数値書式の詳細は、「書式」を参照してください。

  • TO_DATE関数のchar引数にDATE値を指定しないでください。

  • fmtまたはデフォルトの日付書式によっては、返されるDATE値の世紀値が元のcharとは異なる場合があります。

  • Oracle書式(06-JUN-85および6-JUN-1985など)、SQL-92書式(1989-02-28など)、またはNLS_DATE_FORMATパラメータに指定された書式の日付は、日付列に挿入されるとき自動的に変換されます。

  • POLITE.INIファイル内にNLS_DATE_FORMATパラメータを設定して、コンピュータ上のすべてのデータベースのデフォルトの日付書式を指定することができます。POLITE.INIファイル内のNLS_DATE_FORMATパラメータの設定の詳細は、『Oracle Database Lite管理およびデプロイメント・ガイド』を参照してください。

次の例は、TO_NUMBER関数で指定された値に従って、Blakeという名前の従業員の給与を更新します。この例では、最初にBlakeの給与を表示します。次に、Blakeの給与を更新して、再表示します。

SELECT * FROM EMP WHERE ENAME = 'BLAKE';

次の結果を返します。

    EMPNO ENAME      JOB             MGR HIREDATE        SAL      COMM    DEPTNO
--------- ---------- --------- --------- --------- --------- --------- ---------
     7698 BLAKE      MANAGER        7839 1981-05-0      2850                  30

UPDATE EMP SET SAL = SAL + TO_NUMBER('100.52','9,999.99') WHERE ENAME = 'BLAKE';

次の結果を返します。

1 row updated.

SELECT * FROM EMP WHERE ENAME = 'BLAKE';

次の結果を返します。

    EMPNO ENAME      JOB             MGR HIREDATE        SAL      COMM    DEPTNO
--------- ---------- --------- --------- --------- --------- --------- ---------
     7698 BLAKE      MANAGER        7839 1981-05-0   2950.52                  30

3.3.66 TRANSLATE

構文

TRANSLATE(char, from, to)

用途

from内のすべての文字をto内の対応する文字で置換してcharを返します。charfromおよびtoは文字列引数です。

使用上の注意

  • char内の文字でfromにない文字は置き換えられません。

  • 引数fromには、toより多くの文字が含まれていてもかまいません。この場合、fromの終わりの余分な文字はto内に対応する文字がありません。これらの余分な文字がchar内にあると、それらの文字は戻り値から削除されます。

空の文字列をtoに使用して、fromのすべての文字を戻り値から削除できません。TRANSLATEは空の文字列をNULLと解釈するため、NULLの引数があるとNULLを返します。

SELECT TRANSLATE('2KRW229', '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX') "Licence" FROM DUAL;

次の結果を返します。

Licence
-------
9XXX999

3.3.67 TRIM

構文

TRIM( [[<trim_spec >] char ]
    FROM ] string )

<trim_spec>を省略すると、BOTHが指定されます。charを省略すると、表3-14にリストするように、スペース文字が指定されます。

表3-14 TRIM関数で使用される引数

引数 説明
<trim_spec> 指定: LEADINGTRAILINGまたはBOTH
char 単一の文字
string 切捨て対象のターゲット文字列

用途

文字列から先行または後続の空白(またはその他の文字)、あるいは先行と後続の両方を削除します。

SELECT TRIM ('OLD' FROM 'OLDMAN') FROM DUAL;

次の結果を返します。

TRIM('
------
MAN

3.3.68 TRUNC

構文 - 数値引数の場合

TRUNC(n [, m])

構文 - 日付引数の場合

TRUNC(d [, fmt])

用途 - 数値引数の場合

小数第m位で切り捨てられたnを返します。mおよびnは数値引数です。mを指定しないと、小数第1位で切り捨てられます。mが負の場合、小数点の左のm桁を切り捨てます(0にします)。

用途 - 日付引数の場合

時刻部分が書式モデルfmtで指定された時刻単位まで切り捨てられた日付dを返します。fmtを指定しない場合、dは近似日付に切り捨てられます。

使用上の注意

表3-15に、TRUNC(およびROUND)日付関数と使用する書式モデル、および日付が四捨五入される単位をリストします。デフォルト・モデル「DD」は午前0時で切り上げられた日付を返します。

表3-15 TRUNC関数で使用される引数

書式モデル 丸めの単位
CCまたはSCC 世紀
YYYYSYYYY

YEARSYEAR

YYYYYY

年(7月1日で切り上げ)
IYYYIYYIYI ISO年度
Q 四半期(四半期内の2か月目の16日で切り上げ)
MONTHMONMMRM 月(16日以降は切り上げ)
WW 年の最初の日と同じ曜日
IW ISO年度の最初の日と同じ曜日
W 月の最初の日と同じ曜日
DDDDDJ
DAYDYD 開始曜日
HHHH12HH24 時間
MI

例1

SELECT TRUNC(TO_DATE('27-OCT-92', 'DD-MON-YY'), 'YEAR') "First Of The Year"
FROM DUAL;

次の結果を返します。

First Of T
----------
1992-01-01

例2

SELECT TRUNC(15.79,1) "Truncate" FROM DUAL;

次の結果を返します。

 Truncate
---------
     15.7

例3

SELECT TRUNC(15.79,-1) "Truncate" FROM DUAL;

次の結果を返します。

 Truncate
---------
       10

3.3.69 UPPER

構文

UPPER(char)

用途

文字がすべて大文字に変換された文字列引数charを返します。戻り値のデータ型はcharと同じです。

SELECT UPPER('Carol') FROM DUAL;

次の結果を返します。

UPPER
-----
CAROL

ODBC関数

{fn UCASE (char)}

3.3.70 USER

構文

USER

用途

現行のスキーマ名を文字列として返します。

例1

SELECT USER "User" FROM DUAL;

次の結果を返します。

User
--------
SYSTEM

例2

SELECT {fn USER()} FROM DUAL;

次の結果を返します。

{FNUSER()}
------------------------------
SYSTEM

ODBC関数

{ fn USER()}

3.3.71 VARIANCE

構文

VARIANCE([DISTINCT|ALL] x)

用途

数値として、xの分散を返します。Oracle Liteは、次の式を使用してxの分散を計算します。

xiは、xの要素の1つです。

nは、x集合の要素の数値です。nが1の場合、分散は0と定義されます。

SELECT VARIANCE(sal) "Variance" FROM emp;

次の結果を返します。

 Variance
---------
1398313.9

3.3.72 WEEK

構文

{ fn WEEK ( <value_expression> ) }

用途

表3-16にリストする引数を使用して、年間通算週を整数として返します。

表3-16 WEEK関数で使用される引数

引数 説明
<value_expression> 週を計算する日付。結果は1〜53です。

例1

SELECT {fn WEEK({fn CURDATE()})} FROM DUAL;

次の結果を返します。

{FNWEEK({FNCURDATE()})}
-----------------------
                     16

例2

SELECT {fn week('1999-06-15')} FROM DUAL;

次の結果を返します。

EK('1999-06-15')}
-----------------
               25

3.3.73 YEAR

構文

YEAR (date_exp)

用途

YEARを整数として返します。

例1

SELECT {FN YEAR ('06-15-1966')} FROM DUAL;

次の結果を返します。

{FNYEAR('06-15-1966')}
----------------------
                  1966

例2

SELECT {fn YEAR({fn CURDATE()})} FROM DUAL;

次の結果を返します。

{FNYEAR({FNCURDATE()})}
-----------------------
                   1999