zoukankan      html  css  js  c++  java
  • SQL 中常用的功能函数,自定义的功能行数

    在SQL Server指定的数据库中,有Programmability目录,在这个目录下,有存储过程,有功能函数。

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    
    ALTER function   [dbo].[fn_10to36]   ( 
    	@i   int 
    ) 
    returns   varchar(30) 
    as 
    begin 
    
    	declare  @r  varchar(30) 
    	set   @r= '' 
    
    	declare  @m  int 
    	declare  @s  int 
    	set   @s=@i 
    	while   @s> =36 
    	begin 
    		set   @m=@s   %   36 
    		set   @r=case   when   @m <10   then   cast(@m   as   varchar)   
    			else   cast(char(ascii( 'A')+@m-10)   as   varchar)   end+@r 
    		set   @s=@s/36 
    	end 
    		if   @s> 0   or   (@s=0   and   @r= '') 
    			set   @r=case   when   @s <10   then   cast(@s   as   varchar)   
    		else   cast(char(ascii( 'A')+@s-10)   as   varchar)   end+@r 
    	return   @r 
    end   

    比如上述,执行

    is not a recognized function name.

     上面报错,因为要加dbo.[function], 

    select dbo.[fn_10to36_ByJasmine] (101) 即可

    下面是36wei转10位

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    
    
    ALTER function   [dbo].[fn_36to10]   ( 
    @str   varchar(30) 
    ) 
    returns   int
    as 
    begin 
    
    declare @returnValue int
    select @returnValue = 0
    declare @str36 varchar(32)
    declare @subWork varchar(1)
    declare @workIndex int
    select @str36 = '123456789ABCDEFGHIJKLMNOPQRSTUVWSYZ'
    
    declare @len int
    declare @i int
    select @i = 1
    select @len = datalength(@str)
    
    while (@i <= @len)
    begin
    	select @subWork = SUBSTRING(@str, @i, 1) 
    	select @workIndex = charindex( @subWork, @str36)
    	select @returnValue = @returnValue + (@workIndex * power(36, @len-@i))
    	select @i = @i + 1
    end
    
    return   @returnValue 
    end 
    

      

    前面再带个参数的

    CREATE FUNCTION [DBO].[FN_10TO36] (
    @I INT,@B VARCHAR(10))
    RETURNS VARCHAR(30)
    AS 
    BEGIN
    
    DECLARE @R VARCHAR(30)
    SET @R=''
    
    DECLARE @M INT 
    DECLARE @S INT
    SET @S=@I
    WHILE @S>=36
    BEGIN
    SET @M=@S %36 ----取余
    SET @R=CASE WHEN @M<10 THEN CAST(@M AS VARCHAR)
    ELSE CAST(CHAR(ASCII('A')+@M-10)AS VARCHAR) END +@R
    SET @S=@S/36   -----取值
    END
    IF @S>0 OR (@S=0 AND @R='')
    SET @R=CASE WHEN @S<10 THEN CAST(@S AS VARCHAR)
    ELSE CAST(CHAR(ASCII('A')+@S-10) AS VARCHAR ) END +@R
    RETURN @B+RIGHT('0000'+@R,5)
    END
    

      

  • 相关阅读:
    Tensorflow
    EM算法
    神经网络 CNN
    神经网络总结(tensorflow)
    Chrome扩展程序和油猴推荐
    机器学习(贝叶斯,K-means,ROC,AUC)
    机器学习随笔(决策树,集成算法,交叉验证)
    机器学习随笔(线性回归,逻辑回归原理)
    @PropertySource加载文件的两种用法以及配置文件加载顺序
    JNDI(Java Naming and Directory Interface )
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/10057259.html
Copyright © 2011-2022 走看看