0

こんにちはスタックオーバーフロー!

ストアド プロシージャに小さな問題があります。SQL の長いテキスト行から単一の電子メール アドレスを削除しようとしていますが、電子メール アドレスが ; で終わる場合があります。そうでない場合もあります。

私のコードはこれです

ALTER PROCEDURE spReports_DeleteSubscriber
@SubscriptionID varchar(50),
@Email varchar(50)

AS

BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Remove email from subscriptions
UPDATE Subscriptions
SET [ExtensionSettings] = REPLACE(CONVERT(nvarchar(max),[ExtensionSettings]),@Email + ';','')
Where SubscriptionID = @SubscriptionID

-- Remove email from descriptions
UPDATE Subscriptions
SET [Description] = REPLACE([Description],@Email + ';','')
Where SubscriptionID = @SubscriptionID

END
GO

REPLACE メソッドを 2 回使用し、; を使用してメール アドレスを 1 回削除する必要があると思いますか? そして一度なし?

4

1 に答える 1

2

ダブル REPLACE を使用します。シンプルで効果的です

于 2013-05-31T15:30:28.093 に答える