用sqlserver 实现带英文字母的流水码
2013-11-11 20:55
239 查看
--下面函数实现在sqlserver中产生带字母流水号,如ABC增加一个为ABD, ABCD 递增为ABCE
create function dbo.f_IncIdent(@p_AIdent varchar(36))
returns varchar(20)
as
begin
declare @v_cChars varchar(40),
@v_J integer,
@v_K Integer,
@v_result varchar(40);
set @v_cChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
set @v_Result = @p_AIdent;
set @v_j= Len(@p_AIdent)
while @v_J >1
begin
SET @v_K = CHARINDEX(SUBSTRING(@P_AIdent,@V_J,1), @V_cChars);
if @V_K < Len(@V_cChars)
begin
set @v_result=substring(@v_result,1,@v_J-1)+SUBSTRING(@V_cChars,@v_k+1,1)+substring(@v_result,@v_J+1,40)
SET @V_K=Len(@P_AIdent)
while @v_k>@V_J
begin
set @v_result=substring(@v_result,1,@v_k-1)+substring(@v_cChars,1,1)+substring(@v_result,@v_k+1,40)
set @v_k=@v_k-1;
end;
return @v_result;
break;
end;
set @v_J=@v_J-1;
end;
return @v_result;
end;
create function dbo.f_IncIdent(@p_AIdent varchar(36))
returns varchar(20)
as
begin
declare @v_cChars varchar(40),
@v_J integer,
@v_K Integer,
@v_result varchar(40);
set @v_cChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
set @v_Result = @p_AIdent;
set @v_j= Len(@p_AIdent)
while @v_J >1
begin
SET @v_K = CHARINDEX(SUBSTRING(@P_AIdent,@V_J,1), @V_cChars);
if @V_K < Len(@V_cChars)
begin
set @v_result=substring(@v_result,1,@v_J-1)+SUBSTRING(@V_cChars,@v_k+1,1)+substring(@v_result,@v_J+1,40)
SET @V_K=Len(@P_AIdent)
while @v_k>@V_J
begin
set @v_result=substring(@v_result,1,@v_k-1)+substring(@v_cChars,1,1)+substring(@v_result,@v_k+1,40)
set @v_k=@v_k-1;
end;
return @v_result;
break;
end;
set @v_J=@v_J-1;
end;
return @v_result;
end;
相关文章推荐
- Oracle 性能相关常用脚本(SQL)
- 海量数据库及分区4——《12年资深DBA教你Oracle开发与优化——性能优化部分》
- mysql 字段名字包含空格引发的问题
- 13 usage of mysql
- Sql server 中关闭自增字段
- sqlite3函数小结
- 图解SQL的Join
- SQL语句的增删改查(详细)
- MySQL生僻字(不常用字)的完整解决方案
- 六种删除数据库重复行的方法 .
- SQL逻辑查询处理顺序特别提醒
- SQL逻辑查询处理顺序特别提醒
- SQL逻辑查询处理顺序特别提醒
- SQLITE3 使用总结(3~5)(转)
- SQLITE3 使用总结(1~2)(转)
- SQL常用函数集锦
- Navicat for MySQL使用手记(下)--实现自动备份数据库
- MongoDB实战(3)固定集合与GridFS
- MongoDB实战(3)固定集合与GridFS
- Navicat for MySQL使用手记(中)--导入/导出数据表