Note: Functions for converting to date, numeric, string, and timestamp data types can be found through the related links. |
|
ASCIISTR |
Converts An ASCII String To An ASCII String In The Database's Character Set |
ASCIISTR(ch VARCHAR2 CHARACTER SET ANY_CS) RETURN VARCHAR2 CHARACTER SET ch%CHARSET; |
SELECT ASCIISTR(CHR(128) || 'Hello' || CHR(255)) FROM dual; |
|
BFILENAME |
Returns a BFILE from a combination of a directory and a file name |
BFILENAME(directory IN VARCHAR2, filename IN VARCHAR2) RETURN BFILE; |
DECLARE src_file BFILE; BEGIN src_file := bfilename('CTEMP', 'myfile.txt'); END; / |
|
BIN_TO_NUM |
Converts a bit vector to a number |
BIN_TO_NUM(<value>,<value>,....) |
SELECT BIN_TO_NUM(1, 0, 1, 0) FROM dual; |
|
CAST |
Converts one built-in datatype or collection-typed value into another built-in datatype or collection-typed value |
CAST(<string_or_column> AS <DATATYPE>) |
SELECT CAST(15402 AS VARCHAR2(30)) FROM dual; |
|
CHARTOROWID |
Converts a value from CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype to ROWID datatype |
CHARTOROWID(<char>); |
conn hr/hr
SELECT rowid FROM employees;
SELECT last_name FROM employees WHERE ROWID = CHARTOROWID('AAAQvRAAFAAAABYAAp'); |
|
COMPOSE |
Convert a string in any data type to a Unicode string |
COMPOSE(<string_or_column>)
Unistring Value |
Resulting character |
unistr('\0300') |
grave accent (`) |
unistr('\0301') |
acute accent (? |
unistr('\0302') |
circumflex (ˆ) |
unistr('\0303') |
tilde (~) |
unistr('\0308') |
umlaut (? | |
SELECT 'ol' || COMPOSE('e' || UNISTR('\0301')) FROM dual; |
|
CONVERT |
Converts a character string from one character set to another |
CONVERT(<char>, <dest_char_set>, <source_char_set>) |
SELECT CONVERT('?????A B C D E','US7ASCII','WE8ISO8859P1') FROM dual; |
|
DECOMPOSE |
Converts a unicode string to a string |
DECOMPOSE(<unicode_string>) |
SELECT DECOMPOSE('ol' || COMPOSE('e' || UNISTR('\0301'))) FROM dual; |
|
HEXTORAW |
Converts char containing hexadecimal digits in the CHAR, VARCHAR2, NCHAR, or NVARCHAR2 character set to a raw value |
HEXTORAW(<hex_value>) |
CREATE TABLE test ( raw_col RAW(10));
desc test
INSERT INTO test VALUES (HEXTORAW('7D'));
SELECT * FROM test; |
|
NUMTODSINTERVAL |
Converts a number to an INTERVAL DAY TO SECOND literal |
NUMTODSINTERVAL(n, <interval_unit>) |
SELECT NUMTODSINTERVAL(120, 'DAY') FROM dual;
SELECT NUMTODSINTERVAL(1200, 'HOUR') FROM dual;
SELECT NUMTODSINTERVAL(12000, 'MINUTE') FROM dual;
SELECT NUMTODSINTERVAL(120000, 'SECOND') FROM dual; |
|
NUMTOYMINTERVAL |
Converts n to an INTERVAL YEAR TO MONTH literal |
NUMTOYMINTERVAL(n, <interval_unit>) |
conn hr/hr
SELECT last_name, hire_date, salary, SUM(salary) OVER (ORDER BY hire_date RANGE NUMTOYMINTERVAL(1, 'YEAR') PRECEDING) AS t_sal FROM employees; |
|
RAWTOHEX |
Converts raw to a character value containing its hexadecimal equivalent |
RAWTOHEX(<raw_value>) |
CREATE TABLE test ( raw_col RAW(10));
desc test
INSERT INTO test VALUES (HEXTORAW('7D'));
SELECT * FROM test; SELECT RAWTOHEX(raw_col) HEXVAL FROM test; |
|
RAWTONHEX |
Converts raw to an NVARCHAR2 character value containing its hexadecimal equivalent |
RAWTONHEX(<raw_value>); |
col dumpcol format a30
SELECT RAWTONHEX(raw_col) HEXVAL, dump(raw_col) dumpcol FROM test; |
|
REFTOHEX |
Converts argument expr to a character value containing its hexadecimal equivalent. expr must return a REF. |
REFTOHEX(<expr>); |
conn oe/oe
CREATE TABLE warehouse_table OF warehouse_typ (PRIMARY KEY (warehouse_id));
CREATE TABLE location_table ( location_number NUMBER, building REF warehouse_typ SCOPE IS warehouse_table);
INSERT INTO warehouse_table VALUES (1, 'Downtown', 99);
INSERT INTO location_table SELECT 10, REF(w) FROM warehouse_table w;
SELECT REFTOHEX(building) FROM location_table;
DROP TABLE warehouse_table PURGE; |
|
ROWIDTOCHAR |
Converts a rowid value to VARCHAR2 datatype |
ROWIDTOCHAR(rowid); |
SELECT COUNT(*) FROM servers;
SELECT rowid FROM servers WHERE rownum < 11;
SELECT ROWID FROM servers WHERE ROWIDTOCHAR(ROWID) LIKE '%AAB%'; |
|
ROWIDTONCHAR |
Converts a rowid value to NVARCHAR2 datatype |
ROWIDTOCHAR(rowid) |
See ROWIDTOCHAR demo above |
|
SCN_TO_TIMESTAMP |
Returns the approximate Timestamp for an SCN |
SCN_TO_TIMESTAMP(<scn>); |
SELECT current_scn FROM v$database;
SELECT SCN_TO_TIMESTAMP(8215026-250000) FROM dual; |
|
TIMESTAMP_TO_SCN |
Returns the approximate SCN for a timestamp |
TIMESTAMP_TO_SCN(<timestamp>) |
SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual; |
|
TO_BINARY_DOUBLE |
Converts a Value to the BINARY_DOUBLE Data Type |
TO_BINARY_DOUBLE(<value>); |
See TO_NUMBER demo, below. |
|
TO_BINARY_FLOAT |
Converts a Value to the BINARY_FLOAT Data Type |
TO_BINARY_FLOAT(<value>) RETURN BINARY_FLOAT |
See TO_NUMBER demo, below. |
|
TO_CHAR |
Convert Datatype To String |
TO_CHAR(<string_or_column>, <format>) RETURN VARCHAR2 |
SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY HH:MI:SS') FROM dual; |
Converts DATE and TIMESTAMP to VARCHAR2 with the specified format
The "X" in the ROUND and TRUNC column indicates that these symbols with these functions |
TO_DATE(<date_string>, <format mask>, <NLS_PARAMETER>) |
-- before running these demos SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
Symbol |
Description |
ROUND |
TRUNC |
CC |
One greater than the first two digits of a four-digit year |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'CC') FROM dual;
TO_CHAR(SYSDATE,'CC') --------------------------------------------- 21 |
D |
Starting day of the week |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'D') FROM dual;
TO_CHAR(SYSDATE,'D') -------------------------------------------- 4 |
DD |
Day |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'DD') FROM dual;
TO_CHAR(SYSDATE,'DD') --------------------------------------------- 02 |
DDD |
Day |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'DDD') FROM dual;
TO_CHAR(SYSDATE,'DDD') ---------------------------------------------- 093 |
DAY |
Starting day of the week |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'DAY') FROM dual;
TO_CHAR(SYSDATE,'DAY') ---------------------------------------------- WEDNESDAY |
DY |
Starting day of the week |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'DY') FROM dual;
TO_CHAR(SYSDATE,'DY') ---------------------------------------------- WED |
HH |
Hours |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'HH') FROM dual;
TO_CHAR(SYSDATE,'HH') --------------------------------------------- 10 |
HH12 |
Hours |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'HH12') FROM dual;
TO_CHAR(SYSDATE,'HH12') ----------------------------------------------- 10 |
HH24 |
Hours |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'HH24') FROM dual;
TO_CHAR(SYSDATE,'HH24') ----------------------------------------------- 22 |
I |
ISO Year |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'I') FROM dual;
TO_CHAR(SYSDATE,'I') -------------------------------------------- 8 |
IW |
Same day of the week as the first day of the ISO year |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'IW') FROM dual;
TO_CHAR(SYSDATE,'IW') --------------------------------------------- 14 |
IY |
ISO Year |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'IY') FROM dual;
TO_CHAR(SYSDATE,'IY') --------------------------------------------- 08 |
IYY |
ISO Year |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'IYY') FROM dual;
TO_CHAR(SYSDATE,'IYY') ------------------------------------------------ 008 |
IYYY |
ISO Year |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'IYYY') FROM dual;
TO_CHAR(SYSDATE,'IYYY') ------------------------------------------------ 2008 |
J |
Julian Day |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'J') FROM dual;
TO_CHAR(SYSDATE,'J') -------------------------------------------- 2454559 |
MI |
Minutes |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'MI') FROM dual;
TO_CHAR(SYSDATE,'MI') --------------------------------------------- 29 |
MM |
Month (rounds up on the sixteenth day) |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'MM') FROM dual;
TO_CHAR(SYSDATE,'MM') --------------------------------------------- 04 |
MON |
Month (rounds up on the sixteenth day) |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'MON') FROM dual;
TO_CHAR(SYSDATE,'MON') ---------------------------------------------- APR |
MONTH |
Month (rounds up on the sixteenth day) |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'MONTH') FROM dual;
TO_CHAR(SYSDATE,'MONTH') ------------------------------------------------ APRIL |
Q |
Quarter (rounds up on 16th day of the 2nd month of the quarter) |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'Q') FROM dual;
TO_CHAR(SYSDATE,'Q') -------------------------------------------- 2 |
RM |
Month (rounds up on the sixteenth day) in Roman Numerals |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'RM') FROM dual;
TO_CHAR(SYSDATE,'RM') --------------------------------------------- IV |
SCC |
One greater than the first two digits of a four-digit year |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'SCC') FROM dual;
TO_CHAR(SYSDATE,'SCC') ---------------------------------------------- 21 |
SYYYY |
Year (rounds up on July 1) |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'SYYYY') FROM dual;
TO_CHAR(SYSDATE,'SYYYY') ------------------------------------------------ 2008 |
W |
Week number in the month |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'W') FROM dual;
TO_CHAR(SYSDATE,'W') -------------------------------------------- 1 |
WW |
Week of the year |
|
|
SQL> SELECT TO_CHAR(SYSDATE, 'WW') FROM dual;
TO_CHAR(SYSDATE,'WW') --------------------------------------------- 14 |
Y |
One Digit Year |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'Y') FROM dual;
TO_CHAR(SYSDATE,'Y') -------------------------------------------- 8 |
YY |
Two Digit Year |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'YY') FROM dual;
TO_CHAR(SYSDATE,'YY') --------------------------------------------- 08 |
YYY |
Three Digit Year |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'YYY') FROM dual;
TO_CHAR(SYSDATE,'YYY') ---------------------------------------------- 008 |
YYYY |
Four Digit Year |
X |
X |
SQL> SELECT TO_CHAR(SYSDATE, 'YYYY') FROM dual;
TO_CHAR(SYSDATE,'YYYY') ----------------------------------------------- 2008 | CREATE TABLE t ( datecol1 DATE, datecol2 DATE);
INSERT INTO t (datecol1, datecol2) VALUES (SYSDATE, SYSDATE);
col col1 format a30 col col2 format a20 col col3 format a20 col "Financial Quarter" format a20
SELECT TO_CHAR(datecol1, 'DAY-MONTH-YY') COL1, TO_CHAR(datecol2, 'D-MM/YYYY HH24:MI:SS') COL2, TO_CHAR(datecol2, 'YYYY-MON-DD HH24') COL3, TO_CHAR(datecol2, 'Q') "Financial Quarter" FROM t; |
Demo of FM Formatting From Tom Kyte (Oracle Magazine 3-4/2004) |
SELECT TO_CHAR(dt, 'HH:MI AM') A, TO_CHAR(dt, 'FMHH:MI AM') B, TO_CHAR(dt, 'FMHHFM:MI AM') C FROM (SELECT TO_DATE('09:01 am', 'HH:MI AM') dt FROM dual); |
Convert NUMBER to CHARACTER |
TO_CHAR(number) |
SELECT TO_CHAR(123) FROM dual; |
Convert NUMBER to HEX |
TO_CHAR(NUMBER) RETURN HEX |
SELECT TO_CHAR(1048576,'XXXXXXXX') FROM dual; |
|
TO_CLOB |
Converts CHAR, NCHAR, VARCHAR2, NVARCHAR2, or NCLOB values to CLOB values |
TO_CLOB(right VARCHAR2 CHARACTER SET ANY_CS) RETURN CLOB; |
SELECT TO_CLOB('Some value') FROM dual; |
|
TO_DATE |
Convert A String With Default Format To A Date |
TO_DATE(<string>) RETURN DATE |
SELECT TO_DATE('01-JAN-2004') FROM dual; |
Convert A String With A Non-Default Format To A Date |
TO_DATE(<string>, <format mask>) |
SELECT TO_DATE('01/01/2004', 'MM/DD/YYYY') FROM dual; |
Convert A String With A Non-Default Format And Specify The Language |
TO_DATE(<string>, <format mask>) RETURN DATE |
SELECT TO_DATE('January 12, 2005, 11:03 A.M.', 'MONTH DD, YYYY, HH:MI A.M.', 'NLS_DATE_LANGUAGE = American') FROM dual; |
Convert A String With A Non-Default Format And Specify The Language |
TO_DATE(<date_string>, <format mask>, <NLS_PARAMETER>) RETURN DATE |
ALTER SESSION SET NLS_TERRITORY = 'JAPAN';
SELECT TO_DATE('January 12, 2005, 11:03 A.M.', 'Month dd, YYYY, HH:MI A.M.', 'NLS_DATE_LANGUAGE = American') FROM DUAL;
ALTER SESSION SET NLS_TERRITORY = 'AMERICA'; |
Convert A String To 24 Hour Time |
TO_DATE(<date_string>, <format mask>) RETURN DATE |
SELECT TO_CHAR(SYSDATE, 'MM/DD/YY HH24:MI:SS') FROM dual; |
|
TO_DSINTERVAL |
Converts A String To An INTERVAL DAY TO SECOND DataType |
TO_DSINTERVAL(<date_string>, <format mask>, <NLS_PARAMETER>) |
conn hr/hr
SELECT employee_id, last_name FROM employees WHERE hire_date + TO_DSINTERVAL('100 10:00:00') <= DATE '1990-01-01'; |
|
TO_LOB |
Converts LONG or LONG RAW values in the column long_column to LOB values |
TO_LOB(long_column) RETURN LOB |
desc user_triggers
CREATE TABLE lobtest ( testcol CLOB);
INSERT INTO lobtest SELECT TO_LOB(trigger_body) FROM user_triggers; |
|
TO_MULTI_BYTE |
Returns char with all of its single-byte characters converted to their corresponding multibyte characters |
TO_MULTI_BYTE(character_string) |
-- must be run in a UTF8 database to see the difference SELECT dump('A') FROM dual;
SELECT dump(TO_MULTI_BYTE('A')) FROM dual; |
|
TO_NCHAR |
Converts a DATE or TIMESTAMP from the database character set to the National Character Set specified |
TO_NCHAR(<date_string | interval | CLOB | number>, <format mask>, <NLS_PARAMETER>) RETURN NCHAR |
SELECT TO_NCHAR('ABC') FROM dual;
SELECT TO_NCHAR(1048576) FROM dual;
conn oe/oe
SELECT TO_NCHAR(order_date) FROM orders WHERE order_status > 9; |
|
TO_NCLOB |
Converts CLOB values in a LOB column or other character strings to NCLOB |
TO_NCLOB(lob_or_character_value) RETURN NCLOB |
CREATE TABLE nclob_test( nclobcol NCLOB);
desc nclob_test
INSERT INTO nclob_test (nclobcol) VALUES (TO_NCLOB('Convert this text into the NCLOB data type')); |
|
TO_NUMBER |
Converts a string to the NUMBER data type |
TO_NUMBER(<value>[, <format>, <NLS parameter>]) RETURN NUMBER |
CREATE TABLE test ( testcol VARCHAR2(10));
INSERT INTO test VALUES ('12345.67');
SELECT TO_BINARY_DOUBLE(testcol) BIN_DOUBLE, TO_BINARY_FLOAT(testcol) BIN_FLOAT, TO_NUMBER(testcol) NMBR FROM test; |
Converts a HEX number to FLOAT |
TO_NUMBER(<value>, <format>); |
SELECT TO_NUMBER('0A', 'XX') FROM dual;
SELECT TO_NUMBER('1F', 'XX') FROM dual; |
Converts a HEX number to DECIMAL |
TO_NUMBER(<binary_float | binary_double | number>, '<hex mask>') RETURN <binary_float | binary_double | number>; |
SELECT TO_NUMBER(100000,'XXXXXXXX') FROM dual; |
|
TO_SINGLE_BYTE |
Returns char with all of its multibyte characters converted to their corresponding single-byte characters |
TO_SINGLE_BYTE(character_string) |
-- must be run in a UTF8 database to see the difference
SELECT TO_SINGLE_BYTE(CHR(15711393)) FROM dual; |
|
TO_TIMESTAMP |
Converts a string to an Timestamp Data Type |
TO_TIMESTAMP(<date_string>, <format mask>, <NLS_PARAMETER>) RETURN TIMESTAMP |
SELECT TO_TIMESTAMP('2004-12-01 11:00:00','YYYY-MM-DD HH:MI:SS') FROM dual; |
|
TO_TIMESTAMP_TZ |
Converts a string to an Timestamp with Timezone Data Type |
TO_TIMESTAMP(<date_string>, <format mask>, <NLS_PARAMETER>) RETURN TIMESTAMP WITH TIMEZONE |
SELECT TO_TIMESTAMP_TZ('2004-12-01 11:00:00 -8:00', 'YYYY-MM-DD HH:MI:SS TZH:TZM') FROM dual; |
|
TO_YMINTERVAL |
Converts a character string of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype to an INTERVAL YEAR TO MONTH type |
TO_YMINTERVAL(<char>) RETURN YMINTERVAL |
SELECT hire_date, hire_date+TO_YMINTERVAL('01-02') "14 months" FROM emp; |
|
TRANSLATE USING |
Converts char into the character set specified for conversions between the database character set and the national character set |
TRANSLATE(char_string USING <CHAR_CS character_set | NCHAR_CS character set>) |
conn oe/oe
CREATE TABLE translate_tab ( char_col VARCHAR2(100), nchar_col NVARCHAR2(50));
desc translate_tab
INSERT INTO translate_tab SELECT NULL, translated_name FROM product_descriptions WHERE product_id = 3501;
col char_col format a30 col nchar_col format a30
SELECT * FROM translate_tab;
UPDATE translate_tab SET char_col = TRANSLATE(nchar_col USING CHAR_CS);
SELECT * FROM translate_tab; |
|
UNISTR |
Convert String To The National Character Set (either UTF8 or UTF16) |
UNISTR(ch VARCHAR2 CHARACTER SET ANY_CS) RETURN NVARCHAR2; |
SELECT UNISTR(ASCIISTR(CHR(128) || 'Hello' || CHR(255))) FROM dual; |