首页 > 代码库 > 助记码的全部更新

助记码的全部更新

需要的两个函数:

USE [oaerp]
GO
/****** Object:  UserDefinedFunction [dbo].[f_ch2py]    Script Date: 12/31/2014 17:12:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[f_ch2py](@chn nchar(1))
returns char(1)
as
begin
declare @n int
declare @c char(1)
set @n = 63

select @n = @n +1,
       @c = case chn when @chn then char(@n) else @c end
from(
 select top 27 * from (
     select chn =
‘吖‘ union all select
‘八‘ union all select
‘嚓‘ union all select
‘咑‘ union all select
‘妸‘ union all select
‘发‘ union all select
‘旮‘ union all select
‘铪‘ union all select
‘丌‘ union all select  --because have no ‘i‘
‘丌‘ union all select
‘咔‘ union all select
‘垃‘ union all select
‘嘸‘ union all select
‘拏‘ union all select
‘噢‘ union all select
‘妑‘ union all select
‘七‘ union all select
‘呥‘ union all select
‘仨‘ union all select
‘他‘ union all select
‘屲‘ union all select  --no ‘u‘
‘屲‘ union all select  --no ‘v‘
‘屲‘ union all select
‘夕‘ union all select
‘丫‘ union all select
‘帀‘ union all select @chn) as a
order by chn COLLATE Chinese_PRC_CI_AS
) as b
return(@c)
end


 

USE [oaerp]
GO
/****** Object:  UserDefinedFunction [dbo].[F_GetHelpCode]    Script Date: 12/31/2014 17:12:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[F_GetHelpCode] (
@cName VARCHAR(20) )
RETURNS VARCHAR(12)
AS
BEGIN
   DECLARE @i SMALLINT, @L SMALLINT , @cHelpCode VARCHAR(12), @e VARCHAR(12), @iAscii SMALLINT
   SELECT @i=1, @L=0 , @cHelpCode=‘‘
   while @L<=12 AND @i<=LEN(@cName) BEGIN
      SELECT @e=LOWER(SUBSTRING(@cname,@i,1))
      SELECT @iAscii=ASCII(@e)
      IF @iAscii>=48 AND @iAscii <=57 OR @iAscii>=97 AND @iAscii <=122 or @iAscii=95
       SELECT @cHelpCode=@cHelpCode  +@e
      ELSE
      IF @iAscii>=176 AND @iAscii <=247
            SELECT @cHelpCode=@cHelpCode  + dbo.f_ch2py(@e)
        ELSE SELECT @L=@L-1
      SELECT @i=@i+1, @L=@L+1 END
    RETURN @cHelpCode
END

 

执行更新语句:

update ggoods set abc = (select dbo.F_GetHelpCode(name))

--name是商品名称

助记码的全部更新