oracle與sqlserver利用函數生成年月日加流水號

来源:http://www.cnblogs.com/edisoner/archive/2017/01/18/6294005.html
-Advertisement-
Play Games

最近在做oracle相關的項目,剛接觸oracle,與sqlserver語法上還是有區別的 sqlserver : 示例:FX+當前年月日+00001 如下圖流水號實力所示 原理: 首先 'FX'是固定的,獲取當前年月日方法在sqlserver中分別是: 1.年:YEAR(GETDATE()) 2. ...


最近在做oracle相關的項目,剛接觸oracle,與sqlserver語法上還是有區別的

sqlserver :

示例:FX+當前年月日+00001

如下圖流水號實力所示

原理:

首先 'FX'是固定的,獲取當前年月日方法在sqlserver中分別是:

1.年:YEAR(GETDATE())

2.月:month(getdate())

3.日:DAY(GETDATE())

其次最主要的是流水號自動加1,主要思路是獲取到當前表中FxNum最大的數(後6位最大的數),並且用right函數獲取後6位並且加1。

 sql函數代碼如下:

Create function [dbo].[f_GetFxNum]()
returns varchar(15)
as
begin
declare @FxNum varchar(15)
declare @time varchar(8)
set @time=CONVERT(varchar,YEAR(GETDATE()))+RIGHT('00'+CONVERT(varchar,month(getdate())),2)+CONVERT(varchar,DAY(GETDATE()))--取到當前年月日
select @FxNum='FX'+@time+RIGHT(100000+ISNULL(RIGHT(MAX(FxNum),5),0)+1,5)--獲取當前表最大值並加1
from PX_FxRecord
return @FxNum
end

ALTER TABLE PX_FxRecord ADD DEFAULT ([dbo].[f_GetFxNum]()) FOR FxNum --將該函數綁定到FxNum作為該欄位的預設值

參數說明:

Right(str,len) -欄位返回最右邊的len個字元的字元串str
MAX()    -欄位中最大的值
IsNull()    -判斷內容是否為空

convert()       -格式轉換

Oracle:

oracle比sql語法上簡單精煉一點,其實思路都一樣,編碼模式以'FX'開頭後8位年月日再加8位流水號,在該表中查詢當日最大號加1,若沒有,則從系統時間最小數開始(FX+當前年月日+000001),一直加1.

sql中的right函數在oracle中用substr代替

oracle函數代碼如下:

 

create or replace function f_GetFxNum
return nvarchar2
as
 FxNum nvarchar2(16);
begin
SELECT 'FX'||(NVL(MAX(SUBSTR(FxNum,3,14)),TO_CHAR(SYSDATE,'YYYYMMDD')||'000000')+1) into FxNum FROM PX_FxRecord   WHERE SUBSTR(FxNum,3,8)=TO_CHAR(SYSDATE,'YYYYMMDD') ;
return FxNum;
end;

 

 

 

參數說明:

1.substr(str,截取開始位置,len) //返回截取的字, right(str,len) 返回從最右邊開始len個字元串

2.TO_CHAR(SYSDATE,'YYYYMMDD') //返回當前年月日

3.NVL() // NVL(str1,str2) 如果oracle第一個參數為空那麼顯示第二個參數的值,如果第一個參數的值不為空,則顯示第一個參數本來的值。

總結

1.oracle和sqlserver思想原理都差不多,基於sql開發,只是語法實現方式上不同。

2.當然實現流水號不止函數這種方式,也可以利用存儲過程來實現,有興趣的朋友可以研究下。

 


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

-Advertisement-
Play Games
更多相關文章
  • 記得在自己學習資料庫知識的時候特別喜歡看案例,因為優化的手段是容易掌握的,但是整體的優化思想是很難學會的。這也是為什麼自己特別喜歡看案例,今天也開始分享自己做的優化案例。 最近一直很忙,博客產出也少的可憐,今天整理了一下自己做過優化或各種方案的客戶已經超過100家了,今天分享的案例算是在這些客戶中比 ...
  • Apache Flink是一個面向分散式數據流處理和批量數據處理的開源計算平臺,它能夠基於同一個Flink運行時,提供支持流處理和批處理兩種類型應用的功能。 現有的開源計算方案,會把流處理和批處理作為兩種不同的應用類型,因為它們所提供的SLA(Service Level Aggreement)是完全 ...
  • 編輯 用戶: SYSTEM 1.1, 1.2, 2.1, 2.2, 3.1, 3.2, 4.1, 4.2, 5.1, 5.2, 6.1, 6.2, 7.1, 7.2, 8.1, ...
  • 執行計劃顯示SQL執行的開銷 工具→ SQL Server Profiler : SQL Server 分析器,監視系統調用的SQL Server查詢 Top查詢 -- Top Percent 選擇百分比 SELECT top 30 percent * FROM [SchoolDB].[dbo].[... ...
  • 前言 最近連續接觸了4個OA系統,均存在著不同的性能問題,本文記述對某移動OA系統的優化全過程,讓看官們對資料庫優化流程有一個瞭解,並揭開隱式轉換這無情殺手的神秘面紗。 本文使用的工具:SQL專家雲平臺專業體檢工具 :www.zhuancloud.com 系統情況 硬體配置 軟體情況 資料庫情況 系 ...
  • 遇到的問題 1、最初階段 系統中做了一個監控功能,用於記錄所有的請求數據,數據插入頻繁,量非常大,比如一天1000萬條。考慮到數據插入的效率,就使用記憶體KV緩存來保存。寫入過程是在接收到請求後放入到線程池中,然後線程池非同步處理後寫入。到這問題基本上沒什麼事情。 2、新的需求 後面數據保存了,就需要在 ...
  • httpd yum install httpd -y systemctl status httpd systemctl start httpd systemctl stop firewalld Mariadb yum install mariadb-server mariadb-client -y ...
  • SQL Server 其實從SQL Server 2005開始,也提供了類似ORACLE中固定執行計劃的功能,只是好像很少人使用這個功能。當然在SQL Server中不叫"固定執行計劃"這個概念,而是叫"執行計劃指南"(Plan Guide 很多翻譯是計劃指南,個人覺得執行計劃指南稍好一些)。當然兩... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...