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

问题描述:

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

Find a demo here

您可以使用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