[英]String manipulation using stored procedure
我有一个用冒号分隔的字符串,例如
@var='apple;banana;snake;mango;dog';
@tobedeleted='banana';
并假设是否需要使用存储的procs从@var中删除香蕉,结果字符串应类似于
@var='apple;snake;mago;dog'
使用存储过程如何做到这一点?
确保在左侧和右侧对所有标记进行定界,替换然后删除添加的定界符
select substring(replace(';' + @var + ';', ';' + @remove + ';', ';'), 2, len(@var) - len(@remove) - 1)
不确定我是否会申请proc,但这完全取决于您要实现的目标。
如果您在proc上执行INSIST;
CREATE PROC dbo.NoMoreBananas
@FullString VARCHAR(1000),
@StringToDelete VARCHAR(50),
@OutString VARCHAR(1000) OUTPUT
AS
BEGIN
SET @OutString = REPLACE(REPLACE(@FullString, @StringToDelete, ''), ';;', ';')
IF(LEFT(@OutString, 1) = ';')
BEGIN
SET @OutString = RIGHT(@OutString, LEN(@OutString)-1)
END
IF(RIGHT(@OutString, 1) = ';')
BEGIN
SET @OutString = LEFT(@OutString, LEN(@OutString)-1)
END
END
GO
DECLARE @RC int
DECLARE @FullString varchar(1000) = 'apple;banana;snake;mango;dog'
DECLARE @StringToDelete varchar(50) = 'banana'
DECLARE @OutString varchar(1000)
-- TODO: Set parameter values here.
EXECUTE @RC = [dbo].[NoMoreBananas]
@FullString
,@StringToDelete
,@OutString OUTPUT
SELECT @OutString
GO
SELECT REPLACE(REPLACE(';;'+@var+';;',';'+@tobedeleted,''),';;','')
SET @var = REPLACE (@var + ';', @tobedeleted + ';', '')
使用2个REPLACE函数,一个删除单词,第二个删除重复的“;”(如果出现):
set @var = REPLACE( REPLACE(@var, @tobedeleted, ''), ';;', ';')
您应该规范化数据库。 如果可以将这些值( 'apple;banana;snake;mango;dog'
)存储在表中,则将更加简单。 在这种情况下,一个简单的DELETE
语句将解决问题:
DELETE dbo.Fruits
WHERE Name = N'banana'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.