SQL |转换函数
在某些情况下,服务器使用一种类型的数据,而它需要不同数据类型的数据。当服务器可以自动将数据转换为预期的数据类型时,就会发生这种情况。这种数据类型转换可以由服务器隐式完成,也可以由用户显式完成。
隐式数据类型转换:
在这种类型的转换中,数据隐式地从一种类型转换为另一种类型(自行/自动)。
From | To |
---|---|
VARCHAR2 or CHAR | NUMBER |
VARCHAR2 or CHAR | DATE |
DATE | VARCHAR2 |
NUMBER | VARCHAR2 |
- 询问:
SELECT employee_id,first_name,salary FROM employees WHERE salary > 15000;
输出 :
Employee_ID FIRST_NAME SALARY 100 Steven 24000 101 Neena 17000 102 lex 17000 - 询问:
SELECT employee_id,first_name,salary FROM employees WHERE salary > '15000';
输出 :
Employee_ID FIRST_NAME SALARY 100 Steven 24000 101 Neena 17000 102 lex 17000 在这里,我们看到两个查询的输出结果相同,尽管第二个查询使用'15000'作为文本,但它会自动转换为int数据类型。
例子 :
显式数据类型转换:
TO_CHAR函数:
TO_CHAR函数用于将数字或日期输入类型转换为具有格式模型的字符类型(可选)。
句法 :
TO_CHAR(number1, [format], [nls_parameter])
将TO_CHAR函数与 Dates 一起使用:
句法 :
TO_CHAR(date, ’format_model’)
格式模型:
- 必须用单引号括起来并且是大小写
敏感的 - 可以包含任何有效的日期格式元素
- 有一个 fm 元素来删除填充的空白或
抑制前导零 - 用逗号与日期值隔开
例子 :
SELECT employee_id, TO_CHAR(hire_date, ’MM/YY’) Month_Hired
FROM employees
WHERE last_name = ’Higgins’;
输出 :
EMPLOYEE_ID | MONTH_HIRED |
---|---|
205 | 06/94 |
日期格式模型的元素:
YYYY | Full year in Numbers |
YEAR | Year spelled out |
MM | Two digit value for month |
MONTH | Full name of the month |
MON | Three Letter abbreviation of the month |
DY | Three letter abbreviation of the day of the week |
DAY | Full Name of the of the week |
DD | Numeric day of the month |
日期格式模型的元素:
日期格式元素 - 时间格式:
使用下表中列出的格式来显示时间信息和字面量,并将数字更改为拼写数字。
ELEMENT | DESCRIPTION |
---|---|
AM or PM | Meridian indicater |
A.M. or P.M. | Meridian indicater with periods |
HH or HH12 or HH24 | Hour of day,or hour (1-12),or hour (0-23) |
MI | Minute 0-59 |
SS | Second 0-59 |
SSSSS | Second past Mid Night 0-86399 |
其他格式:
ELEMENT | DESCRIPTION |
---|---|
/ . , | Punctuation is reproduced in the result |
“of the” | Quoted string is reproduced in the result |
指定影响数字显示的后缀:
ELEMENT | DESCRIPTION |
---|---|
TH | Ordinal Number (for example DDTH for 4TH |
SP | Spelled out number (for example DDSP for FOUR |
SPTH or THSP | spelled out ordinal numbers (for example DDSPTH for FOURTH |
例子 :
SELECT last_name,
TO_CHAR(hire_date, ’fmDD Month YYYY’)
AS HIREDATE
FROM employees;
输出 :
LASTNAME | HIIREDATE |
---|---|
Austin | 25 January 2005 |
Shubham | 20 June 2004 |
Nishant | 15 January 1999 |
Ankit | 15 July 1995 |
Vanshika | 5 August 2004 |
Kusum | 10 June 1994 |
Faviet | 11 March 2005 |
King | 9 April 1996 |
将TO_CHAR函数与 Numbers 一起使用:
句法 :
TO_CHAR(number, ’format_model’)
这些是您可以使用的一些格式元素
用 TO_CHAR函数显示一个数值
作为一个字符:
9 | Represent a number |
0 | Forces a zero to be displayed |
$ | places a floating dollar sign |
L | Uses the floating local currency symbol |
. | Print a decimal point |
, | Prints a Thousand indicator |
例子 :
SELECT TO_CHAR(salary, ’$99,999.00’) SALARY
FROM employees
WHERE last_name = ’Ernst’;
输出 :
SALARY |
---|
$5000 |
使用 TO_NUMBER 和 TO_DATE 函数:
使用TO_NUMBER函数将字符转换为数字字符串:
TO_NUMBER(char[, ’format_model’])
使用TO_DATE函数将字符转换为日期字符串:
TO_DATE(char[, ’format_model’])
这些函数有一个fx修饰符。此修饰符指定TO_DATE函数的字符参数和日期格式模型的精确匹配。
例子 :
SELECT last_name, hire_date
FROM employees
WHERE hire_date = TO_DATE(’May 24, 1999’, ’fxMonth DD, YYYY’);
输出 :
LASTNAME | HIREDATE |
---|---|
Kumar | 24-MAY-99 |