如果在SQL Server中有特定字符,则删除第一个和最后一个字符?
问题描述:
如果字符串中有特定字符(#
),请帮我删除第一个和最后一个字符,否则不要删除?如果在SQL Server中有特定字符,则删除第一个和最后一个字符?
输入1:#Test#SQL#
所需的输出:Test#SQL
输入2:Test#SQL
所需的输出:Test#SQL
预先感谢您
答
只是一个通过使用CASE
表达和LEFT
和RIGHT
串功能的组合另一个角度。
查询
select case when left(@str, 1) = '#' and right(@str, 1) = '#'
then left((right(@str, len(@str) - 1)), len((right(@str, len(@str) - 1))) - 1)
when left(@str, 1) = '#' and right(@str, 1) <> '#'
then right(@str, len(@str) - 1)
when left(@str, 1) <> '#' and right(@str, 1) = '#'
then left(@str, len(@str) - 1)
else @str end as str;
答
您可以使用RIGHT
和LEFT
像这样:
Update myTable set myField = RIGHT(myField,LEN(myField)-1) WHERE myField LIKE '#%';
Update myTable set myField = LEFT(myField,LEN(myField)-1) WHERE myField LIKE '%#';
这将确保即使值开始或与#
符号结束,将被删除。
答
这可能不是最有效的方式,但你可以把它放在一个函数很轻松地:
本质上讲,你在字符串中考的第一个字符,并删除它,如果它的#号。然后你对最后一个字符也做同样的事情。
DECLARE @A VARCHAR(25)
SET @A = '#Test#SQL#'
SET @A = CASE
WHEN SUBSTRING(@A, 1, 1) = '#'
THEN SUBSTRING(@A, 2, LEN(@A))
ELSE @A
END
SET @A = CASE
WHEN SUBSTRING(@A, LEN(@A) , 1) = '#'
THEN SUBSTRING(@A, 1, LEN(@A) - 1)
ELSE @A
END
SELECT @A