sql用函数解决编码由字母和数字结合起来自动增长的问题
2012-07-16 11:30
369 查看
方法一:
--实现aaaa_00001-aaaa_99999
create function 编码()
returns varchar(9)
begin
declare @编号 varchar(9)
declare @id int
select top 1 @编号=编号 from b order by 编号 desc
if @@rowcount=0
set @编号='aaaa_0000'
else
begin
set @id=cast(substring(@编号,6,9) as int) +1
set @编号='aaaa_'+replicate(0,4 - len(@id))+cast(@id as varchar(4))
end return @编号
end
go
--创建表
create table b
(编号 varchar(10) default dbo.编码(b.编号),
name1 varchar(10)
)
go
--插入表
insert into b values(default,'aa')
insert into b values(default,'bb')
--查询
select * from b
方法二:
--实现编码bh000001的自动增长
create
function f_nextbh()
returns
char(8)
as
begin
return
(select 'bh'+right(1000001+isnull(right(max(bh),6),0),6)+1
from tb with(xlock,paglock))
end
go
--创建表
create table tb
(bh char(8) default dbo.f_nextbh(),
col int)
--插入表的数据
begin tran --开始事务
insert into tb(col) values(1)
insert into tb(col) values(2)
insert into tb(col) values(3)
delete tb where col=3
insert into tb(col) values(4)
insert into tb(bh,col) values(dbo.f_nextbh(),14)
commit tran --提交事务
--查询表
select * from tb
drop table tb
drop function f_nextbh
http://blog.sina.com.cn/s/blog_70ae7b1f0100txdy.html
--实现aaaa_00001-aaaa_99999
create function 编码()
returns varchar(9)
begin
declare @编号 varchar(9)
declare @id int
select top 1 @编号=编号 from b order by 编号 desc
if @@rowcount=0
set @编号='aaaa_0000'
else
begin
set @id=cast(substring(@编号,6,9) as int) +1
set @编号='aaaa_'+replicate(0,4 - len(@id))+cast(@id as varchar(4))
end return @编号
end
go
--创建表
create table b
(编号 varchar(10) default dbo.编码(b.编号),
name1 varchar(10)
)
go
--插入表
insert into b values(default,'aa')
insert into b values(default,'bb')
--查询
select * from b
方法二:
--实现编码bh000001的自动增长
create
function f_nextbh()
returns
char(8)
as
begin
return
(select 'bh'+right(1000001+isnull(right(max(bh),6),0),6)+1
from tb with(xlock,paglock))
end
go
--创建表
create table tb
(bh char(8) default dbo.f_nextbh(),
col int)
--插入表的数据
begin tran --开始事务
insert into tb(col) values(1)
insert into tb(col) values(2)
insert into tb(col) values(3)
delete tb where col=3
insert into tb(col) values(4)
insert into tb(bh,col) values(dbo.f_nextbh(),14)
commit tran --提交事务
--查询表
select * from tb
drop table tb
drop function f_nextbh
http://blog.sina.com.cn/s/blog_70ae7b1f0100txdy.html
相关文章推荐
- CSS解决无空格的字母、数字过长不自动换行的问题
- CSS解决无空格太长的字母,数字不会自动换行的问题
- 解决浏览器显示长数字不能自动换行或长字母不能换行的问题
- 【jsp】解决table中输入全部为字母或数字时不自动换行问题
- 解决浏览器显示长数字不能自动换行或长字母不能换行的问题
- html td 换行-解决长串英文字母或者数字不能自动换行的问题
- CSS解决无空格太长的字母,数字不会自动换行的问题
- CSS解决无空格太长的字母,数字不会自动换行的问题
- CSS解决无空格太长的字母,数字不会自动换行的问题
- vs2010下MFC解决自动配置数据源函数SQLConfigDataSource第四个参数字符串问题
- 解决浏览器显示长数字不能自动换行或长字母不能换行的问题
- 快速导入EXCEL到SQL的SQL语句,此方法可以解决数字字母混合的问题
- sql自动增长标识导致导入数据问题的解决方法
- CSS解决无空格太长的字母,数字不会自动换行的问题
- 解决数字和英文字母结合检索出现高亮重复问题
- 【关于TABLE函数的SQL优化】解决CBO对TABLE函数基数估算导致的性能问题
- sql中获取字符串中的字母,数字,非数字函数
- SQL SERVER ISNUMERIC函数判断数字不准确问题
- CSS解决无空格太长的字母,数字不会自己主动换行的问题