SQL语句 第8章 SQL函数

8.1  数字函数
8.1.1  数字函数概述
1.ABS(x)
例8.1_1 求88和-88的绝对值。
SELECT ABS(88), ABS(-88) FROM dual;

2.ACOS(x)
例8.1_2 求ACOS(1)和ACOS(-1)的值。
SELECT ACOS(1), ACOS(-1) FROM dual;

3.ASIN(x)
例8.1_3 求ASIN (0.5)和ASIN (-0.5)的值。
SELECT ASIN (0.5), ASIN (-0.5) FROM dual;

4.ATAN(x)
例8.1_4 求ATAN (5)和ATAN (-5)的值。
SELECT ATAN (5), ATAN (-5) FROM dual;

5.ATAN2(x, y)
例8.1_5 求ATAN2(10,2)和ATAN2(-5,1)的值。
SELECT ATAN2(10,2), ATAN2(-5,1) FROM dual;

6.BITAND(x, y)
例8.1_6
SELECT BITAND(15,-1) FROM dual;

7.CEIL(x)
例8.1_7 求CEIL(15) CEIL(-15) CEIL(15.3) CEIL(-15.8)的值。
SELECT CEIL(15), CEIL(-15), CEIL(15.3), CEIL(-15.8) FROM dual;

8.COS(x)
例8.1_8 求COS(3.1415926/4)、COS(-3.1415926/4) 的值。
SELECT COS(3.1415926/4), COS(-3.1415926/4) FROM dual;

9.COSH(x)
例8.1_9 求COSH (1)、COSH (-1) 的值。
SELECT COSH(1), COSH(-1) FROM dual;

10.EXP(x)
例8.1_10 求EXP(1)、EXP(-1) 的值。
SELECT EXP(1), EXP(-1) FROM dual;

11.FLOOR(x)
例8.1_11 求FLOOR (15)、FLOOR (-15)、FLOOR (15.3)、FLOOR (-15.8)的值。
SELECT FLOOR(15), FLOOR(-15), FLOOR(15.3), FLOOR(-15.8) FROM dual;

12.LN(x)
例8.1_12 求LN (2.71828183)、LN (1)的值。
SELECT LN(2.71828183), LN(1) FROM dual;

13.LOG(x, y)
例8.1_13 求LOG(10, 10)、LOG(2, 8)的值。
SELECT LOG(10, 10), LOG(2, 8) FROM dual;

14.MOD(x, y)
例8.1_14 求MOD(10, 5)、MOD(10, 3)的值。
SELECT MOD(10, 5), MOD(10, 3) FROM dual;

15.POWER(x, y)
例8.1_15 求POWER(2, 3)、POWER(10, 2)的值。
SELECT POWER(2, 3), POWER(10, 2) FROM dual;

例8.1_16 求ROUND(15.51)、ROUND(15.49)、ROUND(15.51, 1)、ROUND(15.51,0) ROUND(15.51, -1)的值。
SELECT ROUND(15.51), ROUND(15.49),
  ROUND(15.51,1), ROUND(15.51,0), ROUND(15.51,-1) FROM dual;

17.SIGN(x)
例8.1_17 求SIGN(10)、SIGN(-10)、SIGN(0)的值。
SELECT SIGN(10), SIGN(-10), SIGN(0) FROM dual;

18.SIN(x)
例8.1_18 求SIN(3.1415926/6)、SIN(3.1415926/4)、SIN(3.1415926/3)的值。
SELECT SIN(3.1415926/6),
  SIN(3.1415926/4), SIN(3.1415926/3) FROM dual;

19.SINH(x)
例8.1_19 求SINH(10)、SINH(-10)的值。
SELECT SINH(10), SINH(-10) FROM dual;

20.TAN(x)
例8.1_20 求TAN(3.1415926/6)、TAN(3.1415926/4)、TAN(3.1415926/3)的值。
SELECT TAN(3.1415926/6),
  TAN(3.1415926/4), TAN(3.1415926/3) FROM dual;

21.TANH(x)
例8.1_21 求TANH (10)、TANH (-10)的值。
SELECT TANH(10), TANH(-10) FROM dual;

22.TRUNC(x[, y])
例8.1_22 求TRUNC(15.51)、TRUNC(15.49)、TRUNC(15.51, 1)、TRUNC(15.51,0) TRUNC (15.51, -1)的值。
SELECT TRUNC(15.51), TRUNC(15.49), TRUNC(15.51,1),
  TRUNC(15.51,0), TRUNC(15.51,-1) FROM dual;


8.2.2  字符函数示例
1.ASCII(x)
例8.2_1 求ASCII('a')、ASCII('A')、ASCII('0')的值。
SELECT ASCII('a'), ASCII('A'), ASCII('0') FROM dual;

例8.2_2 求ASCII('X')、ASCII('XYZ')的值。
SELECT ASCII('X'), ASCII('XYZ') FROM dual;

2.CHR(x)
例8.2_3 求CHR(97)、CHR(65)、CHR(48)的值。
SELECT CHR(97), CHR(65), CHR(48) FROM dual;

3.CONCAT(x, y)
例8.2_4 求CONCAT('学生姓名:', '欧阳春岚')的值。
SELECT CONCAT('学生姓名:', '欧阳春岚') FROM dual;

4.INITCAP(x)
例8.2_5 求INITCAP('My name is yZM')的值。
SELECT INITCAP('My name is yZM') FROM dual;

5.INSTR(x, y [, n][, m])
例8.2_6 求INSTR('XYZABMLNABEF', 'AB')的值。
SELECT INSTR('XYZABMLNABEF', 'AB') FROM dual;

例8.2_7 求INSTR('XYZABMLNABEF', 'AB', 1, 2)的值。
SELECT INSTR('XYZABMLNABEF', 'AB', 1, 2) FROM dual;

6.LENGTH(x)
例8.2_8 求LENGTH('My name is yZM')的值。
SELECT LENGTH('My name is yZM') FROM dual;

7.LOWER(x)
例8.2_9 求LOWER('My name is yZM')的值。
SELECT LOWER('My name is yZM') FROM dual;

8.LPAD(x, n [, y])
例8.2_10 求LPAD('name is YZM', 14, 'My ')的值。
SELECT LPAD('name is YZM', 14, 'My ') FROM dual;

9.LTRIM(x[, y])
例8.2_11 求LTRIM('student', 'tu')、LTRIM('student')的值。
SELECT LTRIM('student', 'stu'), LTRIM('student') FROM dual;

12.REPLACE(x, y, z)
例8.2_12 求REPLACE('XYZABMLNABEF', 'AB', 'CD')的值。
SELECT REPLACE('XYZABMLNABEF', 'AB', 'CD') FROM dual;

13.RPAD(x, n[, y])
例8.2_13 求RPAD('My', 14, ' name is YZM')的值。
SELECT RPAD('My', 14, ' name is YZM') FROM dual;

14.RTRIM(x[, y])
例8.2_14 求RTRIM('student', 'tu')、RTRIM('student')的值。
SELECT RTRIM('student', 'dent'), RTRIM('student') FROM dual;

15.SUBSTR(x, n[, m])
例8.2_15 求SUBSTR ('student', 1, 3)、SUBSTR ('student', 2)的值。
SELECT SUBSTR ('student', 1, 3), SUBSTR ('student', 2) FROM dual;

16.TRIM([y FROM] x)
例8.2_16 求TRIM('AB' FROM 'ABXYZAB')的值。
SELECT TRIM('A' FROM 'AAUVWXYZAA') FROM dual;

17.UPPER(x)
例8.2_17 求UPPER ('Ab')的值。
SELECT UPPER ('Abbb') FROM dual;


8.3.2  日期时间函数示例
1.ADD_MONTHS(x, n)
例8.3_1 求ADD_MONTHS('08-8月-2008', 12)的值。
SELECT ADD_MONTHS('08-8月-2008', 12) FROM dual;

2.CURRENT_DATE
例8.3_2 求CURRENT_DATE的值。
SELECT CURRENT_DATE FROM dual;

3.CURRENT_TIMESTAMP[(x)]
例8.3_3 求CURRENT_TIMESTAMP、CURRENT_TIMESTAMP(3)的值。
SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP(3) FROM dual;

4.DBTIMEZONE
例8.3_4 求DBTIMEZONE的值。
SELECT DBTIMEZONE FROM dual;

5.EXTRACT(YEAR|MONTH|DAY FROM x)
例8.3_5 求EXTRACT(YEAR|MONTH|DAY FROM x)的值。
SELECT EXTRACT(YEAR FROM TO_DATE('08-8-2008','dd-mm-yy')) FROM dual;

6.LAST_DAY(x)
例8.3_6 求LAST_DAY('08-8月-2008')的值。
SELECT LAST_DAY('08-8月-2008') FROM dual;

7.LOCALTIMESTAMP[(x)]
例8.3_7 求LOCALTIMESTAMP、LOCALTIMESTAMP(3)的值。
SELECT LOCALTIMESTAMP, LOCALTIMESTAMP(3) FROM dual;

8.MONTHS_BETWEEN(x, y)
例8.3_8 求MONTHS_BETWEEN('31-8月-2008', '31-1月-2008'), MONTHS_BETWEEN('31-1月-2008', '31-8月-2008')的值。
SELECT MONTHS_BETWEEN('31-8月-2008', '31-1月-2008'),
  MONTHS_BETWEEN('31-1月-2008', '31-8月-2008') FROM dual;

9.NEXT_DAY(x, week)
例8.3_9 求NEXT_DAY('08-8月-2008', '星期三')的值。
SELECT NEXT_DAY('08-8月-2008', '星期三') FROM dual;

10.ROUND(x, [fmt])
例8.3_10 求ROUND('01-7月-2008', 'YEAR')、ROUND('30-6月-2008', 'YEAR')的值。
SELECT ROUND(TO_DATE('01-7-2008','dd-mm-yy'), 'YEAR'),
  ROUND(TO_DATE('30-6-2008', 'dd-mm-yy'), 'YEAR') FROM dual;

11.SYSDATE
例8.3_11 求SYSDATE的值。
SELECT SYSDATE FROM dual;

12.SYSTIMESTAMP
例8.3_12 求SYSTIMESTAMP的值。
SELECT SYSTIMESTAMP FROM dual;

13.TRUNC(x, [fmt])
例8.3_13 求TRUNC('08-08月-2008', 'YEAR')、TRUNC('08-08月-2008', 'MONTH')、TRUNC('08-08月-2008', 'DAY')的值。
SELECT TRUNC(TO_DATE('08-8-2008','dd-mm-yy'), 'YEAR') FROM dual;

??SELECT TRUNC('08-08月-2008', 'YEAR'), TRUNC('08-08月-2008', 'MONTH'), TRUNC('08-08月-2008', 'DAY') FROM dual;

8.4.2  转换函数示例
1.ASCIISTR(x)
例8.4_1 求ASCIISTR('Oracle数据库') 的值。
SELECT ASCIISTR('Oracle数据库') FROM dual;

2.BIN_TO_NUM(b1[, b2][, b3]…)
例8.4_2 求BIN_TO_NUM(1, 0, 1, 1, 1, 0)的值。
SELECT BIN_TO_NUM(1, 0, 1, 1, 1, 0) FROM dual;

3.CAST(x AS type_name)
例8.4_3 求CAST(TO_DATE('08-8-2008','dd-mm-yy')的值。
SELECT CAST(TO_DATE('08-8-2008','dd-mm-yy') AS VARCHAR2(15)) FROM dual;

4.CHARTOROWID(x)
例8.4_4 求CHARTOROWID('BBAFc2AAFAAEEEGFS/')的值。
SELECT CHARTOROWID('BBAFc2AAFAAEEEGFS/') FROM dual;

5.HEXTORAW(x)
例8.4_5 求HEXTORAW('ABCDEF55')的值。
SELECT HEXTORAW('ABCDEF55') FROM dual;

6.RAWTOHEX(x)
例8.4_6 求RAWTOHEX('ABCDEF55')的值。
SET SERVEROUTPUT ON
DECLARE
  var VARCHAR2(15);
BEGIN
  var := RAWTOHEX('ABCDEF55');
  DBMS_OUTPUT.PUT_LINE ('转换结果为:'||var);
END;

7.RAWTONHEX(x)
例8.4_7 求RAWTONHEX('ABCDEF55')的值。
SET SERVEROUTPUT ON
DECLARE
  var NVARCHAR2(15);
BEGIN
  var := RAWTONHEX('ABCDEF55');
  DBMS_OUTPUT.PUT_LINE ('转换结果为:'||var);
END;

8.ROWIDTOCHAR(x)
例8.4_8 求ROWIDTOCHAR('BBAFc2AAFAAEEEGFS/')的值。
SET SERVEROUTPUT ON
DECLARE
  var VARCHAR2(20);
BEGIN
  var := ROWIDTOCHAR('BBAFc2AAFAAEEEGFS/');
  DBMS_OUTPUT.PUT_LINE ('转换结果为:'||var);
END;

9.ROWIDTONCHAR(x)
例8.4_9 求ROWIDTONCHAR('BBAFc2AAFAAEEEGFS/')的值。
SET SERVEROUTPUT ON
DECLARE
  var NVARCHAR2(20);
BEGIN
  var := ROWIDTONCHAR('BBAFc2AAFAAEEEGFS/');
  DBMS_OUTPUT.PUT_LINE ('转换结果为:'||var);
END;

10.TO_BINARY_DOUBLE(x)
例8.4_10 求TO_BINARY_DOUBLE(2008)的值。
SELECT TO_BINARY_DOUBLE(2008) FROM dual;

11.TO_BINARY_FLOAT(x)
例8.4_11 求TO_BINARY_FLOAT(2008)的值。
SELECT TO_BINARY_FLOAT(2008) FROM dual;

12.TO_CHAR(x[, format])
例8.4_12 求TO_CHAR(sysdate, 'YYYY-MM-DD'), TO_CHAR(2008.0808, '9.9EEEE')的值。
SELECT TO_CHAR(sysdate, 'YYYY-MM-DD'),
  TO_CHAR(2008.0808, '9.9EEEE') FROM dual;

13.TO_ DATE(x[, format])
例8.4_13 求TO_DATE('2008-8-8 8:00:00', 'YYYY-MM-DD HH12:MI:SS')的值。
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH12:MI:SS';
SELECT TO_DATE('2008-8-8 8:00:00', 'YYYY-MM-DD HH12:MI:SS') FROM dual;

你可能感兴趣的:(oracle,sql)