请帮我删除第一个和最后一个字符,如果它在字符串中有特定的字符(#
),否则不删除?
输入 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