删除第一个和最后一个字符(如果在 SQL Server 中具有特定字符)?



请帮我删除第一个和最后一个字符,如果它在字符串中有特定的字符(#),否则不删除?

输入 1:#Test#SQL#

期望输出 :Test#SQL

输入 2:Test#SQL

期望输出 :Test#SQL

提前谢谢你

通过使用CASE表达式以及LEFTRIGHT字符串函数的组合,只是另一种视角。

查询

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;

在此处查找演示

你可以像这样使用RIGHTLEFT

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

相关内容

  • 没有找到相关文章

最新更新