oracle与sqlserver利用函数生成年月日加流水号

2024-06-03 11:32

本文主要是介绍oracle与sqlserver利用函数生成年月日加流水号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在做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
endALTER 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函数代码如下:

createor replace function f_GetFxNum
return nvarchar2
asFxNum 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.当然实现流水号不止函数这种方式,也可以利用存储过程来实现,有兴趣的朋友可以研究下。

这篇关于oracle与sqlserver利用函数生成年月日加流水号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026863

相关文章

Django中的函数视图和类视图以及路由的定义方式

《Django中的函数视图和类视图以及路由的定义方式》Django视图分函数视图和类视图,前者用函数处理请求,后者继承View类定义方法,路由使用path()、re_path()或url(),通过in... 目录函数视图类视图路由总路由函数视图的路由类视图定义路由总结Django允许接收的请求方法http

Django HTTPResponse响应体中返回openpyxl生成的文件过程

《DjangoHTTPResponse响应体中返回openpyxl生成的文件过程》Django返回文件流时需通过Content-Disposition头指定编码后的文件名,使用openpyxl的sa... 目录Django返回文件流时使用指定文件名Django HTTPResponse响应体中返回openp

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一