简体   繁体   中英

String manipulation using stored procedure

I have a colon separated string such as

@var='apple;banana;snake;mango;dog';
@tobedeleted='banana';

and suppose if I need to delete banana from @var using stored procs and the resulting string should look like

@var='apple;snake;mago;dog'

How is this achievable using a stored procedure?

确保在左侧和右侧对所有标记进行定界,替换然后删除添加的定界符

select substring(replace(';' + @var + ';', ';' + @remove + ';', ';'), 2, len(@var) - len(@remove) - 1)

Not sure I would go for a proc, but it depends entirely on the context of what you're attempting to achieve.

If you INSIST on a proc;

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, ''), ';;', ';')

You should normalize database. Would be much simpler if those values ( 'apple;banana;snake;mango;dog' ) could be stored within table. In this case, a simple DELETE statement will solve the problem:

DELETE dbo.Fruits
WHERE Name = N'banana'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM