将字符串对转换成字典(临时表)的自定义函数(SQL)

经常会用到这个功能所以写成了自定义函数,相信有一定实用性
将一对字符串转换成字典(临时表)
但在自定义函数中使用 RAISERROR抛出错误时会有错(存储过程中可以),望赐教
使用方法:
select * from f_dic('aa,bfeab,cc,dxd,eeeee', '1,2,4,1,5')
结果
aa       1
bfeab   2
cc        4
dxd     1
eeeee   5

CREATE   FUNCTION   [ dbo ] . [ f_dic ]  
(
@keys   VARCHAR ( 8000 ), 
@values   VARCHAR ( 8000

RETURNS   @t   TABLE ( [ key ]   VARCHAR ( 20 ),value  VARCHAR ( 20 )) 
AS  
  
BEGIN
--     IF LEN(@keys)-LEN(REPLACE(@keys,',',''))<>LEN(@values)-LEN(REPLACE(@values,',',''))
--
        BEGIN
--
        RAISERROR (N'参数@keys的长度与@values的长度不一至',
--
                   10,1);
--
        END
     WHILE  ( CHARINDEX ( ' , ' , @keys ) <> 0
      
BEGIN  
        
INSERT   @t  ( [ key ] ,value) VALUES ( SUBSTRING ( @keys , 1 , CHARINDEX ( ' , ' , @keys -   1 ), SUBSTRING ( @values , 1 , CHARINDEX ( ' , ' , @values -   1 ))         
        
SET   @keys = STUFF ( @keys , 1 , CHARINDEX ( ' , ' , @keys ), ''
        
SET   @values = STUFF ( @values , 1 , CHARINDEX ( ' , ' , @values ), ''
      
END  
    
INSERT   @t  ( [ key ] ,value)  VALUES ( @keys , @values )      
    
RETURN  
  
END

转载于:https://www.cnblogs.com/Dove/archive/2008/04/02/1134933.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值