選讀SQL經典實例筆記20_Oracle語法示例

来源:https://www.cnblogs.com/lying7/archive/2023/08/09/17611205.html
-Advertisement-
Play Games

![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230807132720267-1631745639.png) # 1. 計算一年有多少天 ## 1.1. Oracle sql語句實例 ```sql select 'Days ...


1. 計算一年有多少天

1.1. Oracle sql語句實例

select 'Days in 2005: '||
        to_char(add_months(trunc(sysdate,'y'),12)-1,'DDD')
        as report
   from dual
 union all
 select 'Days in 2004: '||
        to_char(add_months(trunc(
                     to_date('01-SEP-2004'),'y'),12)-1,'DDD')
   from dual
REPORT
-----------------
Days in 2005: 365
Days in 2004: 366

2. 查找含有數字和字母的字元串

2.1. Oracle sql語句實例

with v as (
select 'ClassSummary' strings from dual union
select '3453430278'           from dual union
select 'findRow 55'           from dual union
select '1010 switch'          from dual union
select '333'                  from dual union
select 'threes'               from dual
)
select strings
  from (
select strings,
       translate(
         strings,
         'abcdefghijklmnopqrstuvwxyz0123456789',
         rpad('#',26,'#')||rpad('*',10,'*')) translated
  from v
       ) x
 where instr(translated,'#') > 0
   and instr(translated,'*') > 0

3. 把整數轉換成二進位

3.1. sql Oracle語句實例

ENAME        SAL SAL_BINARY
---------- ----- --------------------
SMITH        800 1100100000
ALLEN       1600 11001000000
WARD        1250 10011100010
JONES       2975 101110011111
MARTIN      1250 10011100010
BLAKE       2850 101100100010
CLARK       2450 100110010010
SCOTT       3000 101110111000
KING        5000 1001110001000
TURNER      1500 10111011100
ADAMS       1100 10001001100
JAMES        950 1110110110
FORD        3000 101110111000
MILLER      1300 10100010100

3.2. sql語句實例

select ename,
       sal,
       (
       select bin
         from dual
        model
        dimension by ( 0 attr )
        measures ( sal num,
                   cast(null as varchar2(30)) bin,
                   '0123456789ABCDEF' hex
                 )
        rules iterate (10000) until (num[0] <= 0) (
          bin[0] = substr(hex[cv()],mod(num[cv()],2)+1,1)||bin[cv()],
          num[0] = trunc(num[cv()]/2)
        )
       ) sal_binary
  from emp

4. 標量子查詢轉換為複合子查詢

4.1. sql語句實例

select e.deptno,
       e.ename,
       e.sal,
       (select d.dname,d.loc,sysdate today
          from dept d
         where e.deptno=d.deptno)
  from emp e

4.2. SELECT列表裡的子查詢只允許返回一個值

4.3. sql語句實例

create type generic_obj
    as object (
    val1 varchar2(10),
    val2 varchar2(10),
    val3 date
);

4.3.1. 對象類型

4.4.  sql語句實例

select x.deptno,
        x.ename,
        x.multival.val1 dname,
        x.multival.val2 loc,
        x.multival.val3 today
   from (
 select e.deptno,
        e.ename,
        e.sal,
        (select generic_obj(d.dname,d.loc,sysdate+1)
           from dept d
          where e.deptno=d.deptno) multival
   from emp e
        ) x
DEPTNO ENAME      DNAME      LOC        TODAY
------ ---------- ---------- ---------- -----------
    20 SMITH      RESEARCH   DALLAS     12-SEP-2005
    30 ALLEN      SALES      CHICAGO    12-SEP-2005
    30 WARD       SALES      CHICAGO    12-SEP-2005
    20 JONES      RESEARCH   DALLAS     12-SEP-2005
    30 MARTIN     SALES      CHICAGO    12-SEP-2005
    30 BLAKE      SALES      CHICAGO    12-SEP-2005
    10 CLARK      ACCOUNTING NEW YORK   12-SEP-2005
    20 SCOTT      RESEARCH   DALLAS     12-SEP-2005
    10 KING       ACCOUNTING NEW YORK   12-SEP-2005
    30 TURNER     SALES      CHICAGO    12-SEP-2005
    20 ADAMS      RESEARCH   DALLAS     12-SEP-2005
    30 JAMES      SALES      CHICAGO    12-SEP-2005
    20 FORD       RESEARCH   DALLAS     12-SEP-2005
    10 MILLER     ACCOUNTING NEW YORK   12-SEP-2005

4.5. 對象本身是一個標量值,它並不會違反標量子查詢的規則

5. 解析串列化的數據

5.1. sql語句實例

 STRINGS
-----------------------------------
entry:stewiegriffin:lois:brian:
entry:moe::sizlack:
entry:petergriffin:meg:chris:
entry:willie:
entry:quagmire:mayorwest:cleveland:
entry:::flanders:
Entry:robo:tchi:ken:

5.1.1. sql語句實例

create view V
    as
select 'entry:stewiegriffin:lois:brian:' strings
  from dual
 union all
select 'entry:moe::sizlack:'
  from dual
 union all
select 'entry:petergriffin:meg:chris:'
  from dual
 union all
select 'entry:willie:'
  from dual
 union all
select 'entry:quagmire:mayorwest:cleveland:'
  from dual
 union all
select 'entry:::flanders:'
  from dual
 union all
select 'entry:robo:tchi:ken:'
  from dual

5.2. sql語句實例

 VAL1            VAL2            VAL3
--------------- --------------- ---------------
moe                         sizlack
petergriffin    meg         chris
quagmire        mayorwest   cleveland
robo            tchi        ken
stewiegriffin   lois        brian
willie
                           flanders

5.2.1.  sql語句實例

with cartesian as (
 select level id
   from dual
 connect by level <= 100
 )
 select max(decode(id,1,substr(strings,p1+1,p2-1))) val1,
        max(decode(id,2,substr(strings,p1+1,p2-1))) val2,
        max(decode(id,3,substr(strings,p1+1,p2-1))) val3
   from (
 select v.strings,
        c.id,
        instr(v.strings,':',1,c.id) p1,
        instr(v.strings,':',1,c.id+1)-instr(v.strings,':',1,c.id) p2
   from v, cartesian c
  where c.id <= (length(v.strings)-length(replace(v.strings,':')))-1
        )
  group by strings
  order by 1

6. 計算比重

6.1. Oracle支持內置函數RATIO_TO_REPORT

6.2. sql語句實例

select job,num_emps,sum(round(pct)) pct_of_all_salaries
  from (
select job,
       count(*)over(partition by job) num_emps,
       ratio_to_report(sal)over()*100 pct
  from emp
        )
 group by job,num_emps

7. 正則表達式功能

7.1. Oracle Database 10g

7.2. sql語句實例

select emp_id, text
  from employee_comment
 where regexp_like(text, '[0-9]{3}[-. ][0-9]{3}[-. ][0-9]{4}')
   and regexp_like(
          regexp_replace(text,
            '[0-9]{3}([-. ])[0-9]{3}\1[0-9]{4}',''),
          '[0-9]{3}[-. ][0-9]{3}[-. ][0-9]{4}')
   EMP_ID TEXT
---------- ----------------------------------------------------------
      7369 126 Varnum, Edmore MI 48829, 989 313-5351
      7844 989-387.5359
      9999 906-387-1698, 313-535.8886

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 什麼是 MySQL 和 MongoDB MySQL 和 MongoDB 是兩個可用於存儲和管理數據的資料庫管理系統。MySQL 是一個關係資料庫系統,以結構化表格格式存儲數據。相比之下,MongoDB 以更靈活的格式將數據存儲為 JSON 文檔。兩者都提供性能和可擴展性,但它們為不同的應用場景 ...
  • ![file](https://img2023.cnblogs.com/other/2685289/202308/2685289-20230809171102754-1600994267.jpg) > 近日,Apache DolphinScheduler 發佈了 3.1.8 版本。此版本主要基於 3 ...
  • 本文分享自華為雲社區《MRS大企業ERP流程實時數據湖加工最佳實踐》,作者:晉紅輕 。 本文將以ERP流程實踐為例介紹MRS實時數據湖方案的演進 案例實踐需求解析: 業務描述 AE表:會計分錄表,主要記錄財務相關信息,可用於成本核算等業務計算。為業務最主要的表,稱驅動表。 四通道表:實際為四個門店業 ...
  • 執行查詢語句,使用 $nearSphere /** * 1千米 = 0.6213712英里 15千米 = 9.3205679英里 查詢通過除以地球的大約赤道半徑(3963.2英里)將距離轉換為弧度。 * ①:如果是第一頁,查詢50公裡內的老朋友店鋪, * ②:查詢15公裡內所以的置頂服務商家,然後根 ...
  • # SQL 性能分析 ## SQL 執行頻率 MySQL 客戶端連接成功後,通過 `show [session | global] status` 命令可以提供服務其狀態信息。通過下麵指令,可以查看當前資料庫 CRUD 的訪問頻次: `SHOW GLOBAL STATUS LIKE 'Com____ ...
  • [袋鼠雲產品團隊](https://www.dtstack.com/dtinsight?src=szsm)在幫助企業進行數字化轉型實踐的過程中,發現很多企業在[數據生產鏈路](https://www.dtstack.com/dtinsight?src=szsm)上都有著相同的問題。包括數據團隊聚焦於 ...
  • ## 背景 生產上有個導報表功能,工作了很長一段時間一直都很穩,沒出現過什麼問題,最近運營同學突然反饋導出來的數據和實際的對不上,經過排查發現導出的數據有重覆,也有的沒導出來。 由於我們提前生成好數據(每天會truncate重新生成),所以導出的邏輯非常簡單,不需要關聯很多表撈數據,只需要從一張表查 ...
  • # 一、前言 原有的業務系統跑在MySQL主從架構中,高可用通過腳本完成,但存在切換數據丟失和切換不及時風險,調研了高可用更穩定的MGR後,準備入手一試。本篇文章主要記錄GreatSQL從單機擴展到MGR的詳細過程,遇到的問題及解決方法。 # 二、基礎環境 伺服器角色如下 | IP | 埠 | 主 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...