Create FUNCTION dbo.getCode128C(@Code varchar(30)) RETURNS nvarchar(30)
AS
BEGIN
----------------------------------
-- 将编码转换为Code128C条码字符编码
-- 作者:朱亦文
-- 日期:2010.10.14
----------------------------------
-- 必须是数字
IF (ISNUMERIC(@Code)<>1) RETURN N''
-- 必须为偶数位
IF (len(@Code) % 2 > 0) RETURN N''
DECLARE @StartC nvarchar(1)
DECLARE @EndC nvarchar(1)
DECLARE @Ret nvarchar(30)
SET @Ret = N''
SET @StartC = nchar(205)
SET @EndC = nchar(206)
DECLARE @Total int
SET @Total = 105
DECLARE @L int
SET @L = len(@Code) / 2
DECLARE @I int
SET @I = 0
DECLARE @S varchar(2)
DECLARE @V int
WHILE (@I<@L)
BEGIN
SET @S = substring(@Code, @I*2 + 1, 2)
SET @V = cast(@S as int)
IF (@V=0)
SET @Ret = @Ret + N' '
ELSE IF (@V<95)
SET @Ret = @Ret + nchar(32 + @V)
ELSE
SET @Ret = @Ret + nchar(100 + @V)
SET @Total = @Total + @V * (@I + 1)
SET @I = @I + 1
END
SET @V = @Total % 103
IF (@V=0)
SET @Ret = @Ret + N' '
ELSE IF (@V<95)
SET @Ret = @Ret + nchar(32 + @V)
ELSE
SET @Ret = @Ret + nchar(100 + @V)
SET @Ret = @StartC + @Ret + @EndC
RETURN @Ret
END
2010.10.14
附应用示例图片: