删除 () SQL 之间的字符
Remove characters between () SQL
我需要从 SQL 中的字符串值中删除特定文本。
我尝试了各种 CHARINDEX
和 LEN
组合,但总是出错!
我有一个名称字段,其中包含名称。一些字段添加了 ()
中的文本。
示例:
Smith (formerly Jones)
我需要删除括号内的整个部分。以及括号本身。不幸的是,有时该值可能是
Smith (formerly Jones) Reeves
所以我不能只删除 (
之后的所有内容!
这里有两个例子说明如何完成这个。您可以在不声明 @StartIndex
和 @EndIndex
变量的情况下执行此操作,但为了清楚起见,我使用了它们。
DECLARE @StartIndex int, @EndIndex int;
DECLARE @Str varchar(100);
SET @Str = 'This is a (sentence to use for a) test';
SELECT @StartIndex = CHARINDEX('(', @Str, 0), @EndIndex = CHARINDEX(')', @Str, 0);
SELECT SUBSTRING(@Str, 0, @StartIndex) + SUBSTRING(@Str, @EndIndex + 1, LEN(@Str) - @EndIndex) AS [Method1],
LEFT(@Str, @StartIndex - 1) + RIGHT(@Str, LEN(@Str) - @EndIndex) AS [Method2];
请注意,此代码不会删除括号前后的空格,因此您最终会在 "a" 和 "test" 之间有两个空格(因为这不是您问题的一部分) .
在实际使用这样的代码之前,还应包括额外的错误检查,例如,如果 @Str
不包含括号,则会导致错误。
我需要从 SQL 中的字符串值中删除特定文本。
我尝试了各种 CHARINDEX
和 LEN
组合,但总是出错!
我有一个名称字段,其中包含名称。一些字段添加了 ()
中的文本。
示例:
Smith (formerly Jones)
我需要删除括号内的整个部分。以及括号本身。不幸的是,有时该值可能是
Smith (formerly Jones) Reeves
所以我不能只删除 (
之后的所有内容!
这里有两个例子说明如何完成这个。您可以在不声明 @StartIndex
和 @EndIndex
变量的情况下执行此操作,但为了清楚起见,我使用了它们。
DECLARE @StartIndex int, @EndIndex int;
DECLARE @Str varchar(100);
SET @Str = 'This is a (sentence to use for a) test';
SELECT @StartIndex = CHARINDEX('(', @Str, 0), @EndIndex = CHARINDEX(')', @Str, 0);
SELECT SUBSTRING(@Str, 0, @StartIndex) + SUBSTRING(@Str, @EndIndex + 1, LEN(@Str) - @EndIndex) AS [Method1],
LEFT(@Str, @StartIndex - 1) + RIGHT(@Str, LEN(@Str) - @EndIndex) AS [Method2];
请注意,此代码不会删除括号前后的空格,因此您最终会在 "a" 和 "test" 之间有两个空格(因为这不是您问题的一部分) .
在实际使用这样的代码之前,还应包括额外的错误检查,例如,如果 @Str
不包含括号,则会导致错误。