CHARINDEX()、CAST()、LEFT()、STUFF()应用笔记

在项目中多用存储过程可减少传输流量,也可防止库里的表结构遭到泄露等(好处多多),平时很少写存储过程,今天改个东西发现生疏多了,暂且记成笔记吧!

参数@ids="1,2,3,4,"@gid="1"执行后表里结果

ALTER PROCEDURE 存储过程NAME
@gid smallint,
@ids varchar(500)
AS
BEGIN
	SET NOCOUNT ON;
	declare @id smallint
	Begin TransAction B2
	delete from GA(表) where GroupsID=@gid
	WHILE CHARINDEX(',',@ids)>0
    BEGIN
        set @id=CAST(LEFT(@ids,CHARINDEX(',',@ids)-1) as smallint)
		insert into GA(ID,AID) values(@gid,@id)
		IF @@ROWCOUNT=0
		BEGIN
			RollBack TransAction B2
			return 2
		END
        set @ids=STUFF(@ids,1,CHARINDEX(',',@ids),'')
    END
	Commit TransAction B2
	return 1
END

  1. 当SET NOCOUNT为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
  2. CHARINDEX CHARINDEX ( expression1 , expression2 [ , start_location ] )

    Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。

    SQL CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如SQL CHARINDEX函数没有找到要找的字符串,那么函数整数“0”。让我们看看下面的函数命令执行的结果:

    CHARINDEX('SQL', 'Microsoft SQL Server')

    这个函数命令将返回在“Microsoft SQL Server”中“SQL”的起始位置,在这个例子中,CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。

    接下来,我们看这个CHARINDEX命令:

    CHARINDEX('7.0', 'Microsoft SQL Server 2000')

    在这个例子中,CHARINDEX返回零,因为字符串“7.0” 不能在“Microsoft SQL Server”中被找到。
  3. cast
    将某种数据类型的表达式显式转换为另一种数据类型。
    语法:
    CAST ( expression AS data_type )
    CAST(ytd_sales AS char(20))
    把字符串
    '20091014191338'
    转换成时间的时候:
    
    select  cast(stuff(stuff(stuff('20091014191338',9,0,' ' ),12,0,':'),15,0,':') as datetime)
  4. LEFT
    取一个字符串的前若干位
    select left('abcdefg', 3)
    输出: abc
  5. STUFF (有填充物的意思)看参数就知道它的作用了stuff(A,B,C,D)A:原字符串:其中的某一部分将被替换。B:开始替换的位置:指定从原字符串的第几个字符开始替换。C:被替换的字符数:指定从开始处连续有几个字符要被替换掉(如果此数为0,那么“用于替换的字符串”将插入到开始处)。D:用于替换的字符串:该字符串将代替被替换掉的字符串放到原字符串当中。(如果此为空字符串,被替换的字符将被删除。)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值