【東軟實訓】SQL函數

SQL函數

SQL是用於訪問和處理數據庫的標準的計算機語言,咱們所使用的的是Oracle SQLsql

一個數據庫一般包含一個或多個表,每一個表有一個名字表示,下圖即爲一個名爲「emp」的表,接下來的操做都將基於如下的表進行數據庫

## 字符函數

字符函數:主要指參數類型是字符型,不一樣函數返回值多是字符型或數值型oracle

【大小寫轉換】函數

函數 效果 結果

LOWER('SQL Course')spa

將大寫或大小寫混合的字符轉換成小寫 sql course

UPPER('SQL Course')code

將小寫寫或大小寫混合的字符轉換大寫 SQL COURSE
INITCAP('SQL Course') 將每一個單詞的第一個字母轉換成大寫,其他的字母都轉換成小寫 Sql course

 

## 字符處理函數

 

## 數值函數

  • DUAL:是一張虛表,不能保存任何數據,只有一個字段,一行記錄。當咱們不但願從任何表中讀取數據,同時又想利用SQL引擎中的計算表達式的能力幫咱們運算時,就能夠使用DUAL表。
select ROUND(100.456,2),Round(100.456,0),Round(100.456,-1) from DUAL

 

## Date函數

默認的日期形式是: DD-MON-RRblog

咱們能夠在系統變量-環境變量中,添加   key = NLS_DATE_FORMAT  value = YYYY:MM:DD HH24:MI:SS  就能夠正常按照‘年與日’的格式查詢了!事件


SELECT  ename, sal, MONTHS_BETWEEN(SYSDATE,hiredate) months FROM emp ORDER BY months;
SELECT  ename, sal, hiredate, ADD_MONTHS(hiredate,3) new_date FROM emp WHERE  hiredate>'01-1月-82';
SELECT  NEXT_DAY('2006-02-06','星期一') NEXT_DAY FROM DUAL;
SELECT  LAST_DAY('02-2月-06') "LAST DAY" FROM DUAL;
SELECT  empno, hiredate, ROUND(hiredate, 'MONTH') FROM emp WHERE SUBSTR(hiredate,-2,2)='81';
SELECT  empno, hiredate, TRUNC(hiredate, 'MONTH') FROM emp WHERE SUBSTR(hiredate,-2,2)='81';

 

## 轉換函數

【隱式數據類型轉換規則】字符串

  • 不一樣的數據類型之間關聯,若是不使用顯式轉換函數,則它會根據如下規則對數據進行隱式轉換:   
    • 對於 INSERT 和 UPDATE 操做,oracle會把插入值或者更新值隱式轉換爲字段的數據類型
    • 對於SELECT語句,oracle會把字段的數據類型隱式轉換爲變量的數據類型
    • 當比較一個字符型和數值型的值時,oracle會把字符型的值隱式轉換爲數值型
    • 當比較字符型和日期型的數據時,oracle會把字符型轉換爲日期型
    • 用鏈接操做符 (||)時,oracle會把非字符類型的數據轉換爲字符類型
    • 若是字符類型的數據和非字符類型的數據(如number、date、rowid等)做算術運算,則oracle會將字符類型的數據轉換爲合適的數據類型,這些數據類型多是number、date、rowid等

 【顯式數據類型轉換規則】table

  • 一般是在字符類型、日期類型、數值類型之間進行顯式轉換。
  • 主要的三種顯式轉換函數:TO_char  TO_NUMBER TO_DATE
  • To_char(日期格式模型)
    • 必須用單引號引發來而且是大小寫敏感的
    • 能夠包含任何有效的日期元素
    • 使用逗號將日期型數據與日期型格式模型分隔開
    • 日期格式模型的元素
    • To_char用於日期型,用時間元素 格式化日期的事件部分
    • To_char語句中也能夠經過雙引號添加字符串
    • To_char做用於數值型,能夠按照如下形式將數值型數據轉化爲變長的字符串
    • 栗子:
      SELECT ename, TO_CHAR(hiredate, 'DD Month YYYY') HIREDATE FROM  emp;
      Select To_char(sal,'$99,999') Salary from emp where ename = 'Scott'

 

  • To_number:能夠將一個字符串轉換成數值型數據
    select to_number(1999) year from dual;

     

  • To_Date: 將一個字符串轉換成日期型數據
    select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;

     

 

 

## 通用函數

  • 通用函數即與空值(NULL)相關的一些函數,完成對空值(NULL)的一些操做。
  • 主要包括如下函數:
    • NVL:若是expr1不是null,返回expr1,不然返回expr2 
      SELECT ename, sal, comm, (sal*12)+NVL(comm,0) from emp
    • NVL2:若是expr1不是null,返回expr2,不然返回expr3
    • NULLIF:比較兩個表達式,若是相等,返回null,不然,返回第一個表達式
    • COALESCE: COALESCE (表達式1, 表達式2, ...,表達式n)函數是對NVL函數的擴展。COALESCE函數的功能是返回第一個不爲空的參數,參數個數不受限制。
      SELECT  ename, COALESCE(comm, 0)  comm , deptno FROM   emp;
  • 條件處理函數:
    • CASE表達式:
      SELECT ename, deptno,
             (CASE deptno     
                    WHEN 10  THEN '銷售部'
                              WHEN 20  THEN '技術部'
                              WHEN 30  THEN '管理部'
                                ELSE ''    END)   
                                  deptname   
      FROM emp;
    • DECODE
      SELECT ename, deptno,
        decode(deptno,
          10,'銷售部',
          20,'技術部',
          30 , '管理部',
          '')   deptname
      FROM emp;
相關文章
相關標籤/搜索