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(''+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')||'')+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利用函数生成年月日加流水号的更多相关文章
- 你搞懂 ORACLE、 SQLSERVER、MYSQL与DB2的区别了吗
ORACLE. SQLSERVER.MYSQL与DB2的区别--平台性: Oracle.MYSQL与DB2可在所有主流平台上运行: SQL Server只能在Windows下运行: --安 ...
- Java学习-006-三种数据库连接 MySQL、Oracle、sqlserver
此文主要讲述在初学 Java 时,常用的三种数据库 MySQL.Oracle.sqlserver 连接的源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源 ...
- Mysql、Oracle、SqlServer的JDBC连接实现和对比(提供驱动包)
首先,我们需要准备数据库连接所需的jar包.目前mysql的驱动包可能比较好找,但是oracle和sqlserver的有很多,要找到能用的要花一点点心思,这里直接把下载地址和版本发送出来. Mysql ...
- Oracle 与 SqlServer 的区别浅析总结
我主要用过的数据库为Oracle10g和SqlServer2008,通过实际运用和查阅资料整理如下: 主题 Oracle 10g SQLServer 2008 存储过程格式 Create Or Rep ...
- Oracle、SqlServer——基础知识——oracle 与 SqlServer 的区别(未完工)
一. oracle 与 SqlServer 的区别: 类别 oracle SqlServer 连接字符串 || + 变量 变量名 @变量名 初始赋值 := = SQL语句赋值 into = 绑定变量 ...
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
为什么说JAVA中要慎重使用继承 这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...
- Oracle转SqlServer
基础数据所对应的类型不同 在Oracle中有一些基础类型与Sqlserver中名字一样,但是所存储的数据格式不同,Date类型在Oracle中精确到秒,在Sqlserver中只能精确到天 表的结构 O ...
- SqlServer 利用游标批量更新数据
SqlServer 利用游标批量更新数据 Intro 游标在有时候会很有用,在更新一部分不多的数据时,可以很方便的更新数据,不需要再写一个小工具来做了,直接写 SQL 就可以了 Sample 下面来看 ...
- oracle与sqlserver部分区别
oracle和sqlserver的区别:1,执行修改操作要接commit,不然数据仅仅只是查看,并不是提交数据2,oracle不能使用select 字段 这种查看方式查看数据:3,oracle存储过程 ...
随机推荐
- Shortest Path
Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- 猪八戒吃西瓜(wmelon)
猪八戒吃西瓜(wmelon) 题目描述 有一天,贪吃的猪八戒来到了一个大果园,果园里有n(n≤100000)个大西瓜,每个西瓜 的质量不大于长整型(longint),并且每个西瓜的质量都不同.猪八戒非 ...
- PAT (Advanced Level) 1025. PAT Ranking (25)
简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...
- JS——基础知识
1.alert语句 弹出一个对话框. 2.console 这个是在浏览器的控制台打印输出,也有一些公司将招聘信息打印到浏览器的console窗口,比如百度首页. 3.typeof 用这个关键字可以测试 ...
- SQL truncate 、delete与drop区别
SQL truncate .delete与drop区别 相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句 ...
- frame间跳转及相关问题
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- CentOS x 64 MooseFS 学习
一.MFS 简介.... MooseFS(Moose File System,mfs)是一种分布式文件系统,它将数据分布在网络中的 不同服务器上,支持FUSE,客户端可以作为一个 普通的Unix 文件 ...
- (简单) POJ 3468 A Simple Problem with Integers , 线段树+区间更新。
Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...
- 关于IP网段间互访的问题—路由是根本(转)
源: 关于IP网段间互访的问题—路由是根本
- JQuery中 json 和字符串直接相互转换
json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串:JSON.stringify(jsonObj); IE中可能对unicode使用“ ...