加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLserver自定义样式主键-函数实现篇

发布时间:2020-12-12 12:46:39 所属栏目:MsSql教程 来源:网络整理
导读:1.XH2015000001 XH2015000002。。。。。(字母+年份+自增长) 先定义标量值函数 create Function F_GetId() returns nvarchar(50) AS? Begin Declare ?@S nvarchar(50) Select @S= 'XH'+CONVERT(varchar,YEAR(getdate()))+Right(1000000+IsNull(Right(Max(St

1.XH2015000001 XH2015000002。。。。。(字母+年份+自增长)

先定义标量值函数

create Function F_GetId()

returns nvarchar(50)
AS?
Begin
Declare ?@S nvarchar(50)
Select @S= 'XH'+CONVERT(varchar,YEAR(getdate()))+Right(1000000+IsNull(Right(Max(StudentGuid),6),0)+1,6) From StudentInfo
return @S
End?

Go

再创建表:

? CREATE ? TABLE ? StudentInfo( ??
? StudentGuid nvarchar(50) ? NOT ? NULL ? Default ? dbo.F_GetId(),? ??
? StudentName ?varchar(20) ? NOT ? NULL,??
? Constraint ? PK_Student_ID ? Primary ? key(StudentGuid) ??
? ) ??
? GO ?

测试:

Insert ? StudentInfo(StudentName ?) ?values('aa') ??
?Insert ? StudentInfo(StudentName ?) ?values( 'bb') ??



?Select ? * ? From ? StudentInfo



.获得XH20150418000001 XH20150418000002。。。。。(字母+年份日月+自增长)

a.创建标量值函数

create Function F_GetCustomerGuid()
returns nvarchar(50)
AS?
Begin
Declare ?@S nvarchar(50)
Select @S= 'XH'+CONVERT(varchar,getdate(),112)+Right(1000000+IsNull(Right(Max(CustomerID),6) From Customer
return @S
End?
Go

b.创建表

??
? ? CREATE ? TABLE ? Customer( ??
? CustomerID nvarchar(50) ? NOT ? NULL ? Default ? dbo.F_GetCustomerGuid(),? ??
? CustomerName ?varchar(20) ? NOT ? NULL,??
? Constraint ? PK_Custr_ID ? Primary ? key(CustomerID) ??
? ) ??
? GO?

c.测试:

? Insert ? Customer(CustomerName ?) ?values('aa') ??
? Insert ? Customer(CustomerName ?) ?values( 'bb') ??
? Insert ? Customer(CustomerName ?) ?values( 'cc' )
? Select ? * ? From ? Customer


下附带一些SQLServer时间格式:

Select CONVERT(varchar(100),GETDATE(),23): 2006-05-16 
Select CONVERT(varchar(100),0): 05 16 2006 10:57AM 
Select CONVERT(varchar(100),1): 05/16/06 
Select CONVERT(varchar(100),2): 06.05.16 
Select CONVERT(varchar(100),3): 16/05/06 
Select CONVERT(varchar(100),4): 16.05.06 
Select CONVERT(varchar(100),5): 16-05-06 
Select CONVERT(varchar(100),6): 16 05 06 
Select CONVERT(varchar(100),7): 05 16,06 
Select CONVERT(varchar(100),8): 10:57:46 
Select CONVERT(varchar(100),9): 05 16 2006 10:57:46:827AM 
Select CONVERT(varchar(100),10): 05-16-06 
Select CONVERT(varchar(100),11): 06/05/16 
Select CONVERT(varchar(100),12): 060516 
Select CONVERT(varchar(100),13): 16 05 2006 10:57:46:937 
Select CONVERT(varchar(100),14): 10:57:46:967 
Select CONVERT(varchar(100),20): 2006-05-16 10:57:47 
Select CONVERT(varchar(100),21): 2006-05-16 10:57:47.157 
Select CONVERT(varchar(100),22): 05/16/06 10:57:47 AM 
Select CONVERT(varchar(100),24): 10:57:47 
Select CONVERT(varchar(100),25): 2006-05-16 10:57:47.250 
Select CONVERT(varchar(100),100): 05 16 2006 10:57AM 
Select CONVERT(varchar(100),101): 05/16/2006 
Select CONVERT(varchar(100),102): 2006.05.16 
Select CONVERT(varchar(100),103): 16/05/2006 
Select CONVERT(varchar(100),104): 16.05.2006 
Select CONVERT(varchar(100),105): 16-05-2006 
Select CONVERT(varchar(100),106): 16 05 2006 
Select CONVERT(varchar(100),107): 05 16,2006 
Select CONVERT(varchar(100),108): 10:57:49 
Select CONVERT(varchar(100),109): 05 16 2006 10:57:49:437AM 
Select CONVERT(varchar(100),110): 05-16-2006 
Select CONVERT(varchar(100),111): 2006/05/16 
Select CONVERT(varchar(100),112): 20060516 
Select CONVERT(varchar(100),113): 16 05 2006 10:57:49:513 
Select CONVERT(varchar(100),114): 10:57:49:547 
Select CONVERT(varchar(100),120): 2006-05-16 10:57:49 
Select CONVERT(varchar(100),121): 2006-05-16 10:57:49.700 
Select CONVERT(varchar(100),126): 2006-05-16T10:57:49.827 
Select CONVERT(varchar(100),130): 18 ???? ?????? 1427 10:57:49:907AM 
Select CONVERT(varchar(100),131): 18/04/1427 10:57:49:920AM

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读