如何使用tSQL删除字符串的最后一个字符?

如何使用tSQL删除字符串的最后一个字符?,tsql,Tsql,在本例中,我只需要删除最后一个字符,即逗号(,) 我尝试了子字符串、Left和Right函数,但它们需要字符串长度 以下是场景:- select (Case col1 & 1 When 1 Then 'Case 1,' Else '' End) + (Case Col2 & 2 When 2 Then 'Case 2,' Else '' End) + (Case Col3 & 4 When 4 Then 'Case 4,' Else '' End) as Ca

在本例中,我只需要删除最后一个字符,即逗号(,)

我尝试了
子字符串、Left和Right
函数,但它们需要字符串长度

以下是场景:-

select 
(Case col1 & 1 When 1 Then 'Case 1,' Else '' End)  + 
(Case Col2 & 2 When 2 Then 'Case 2,' Else '' End)  +
(Case Col3 & 4 When 4 Then 'Case 4,' Else '' End)  
as Case
from table_01

您可以使用以下公式,即使用长度减去1得到所需的长度:

declare @string varchar(50)

set @string = 'testing, testing, testing,'

select substring(@string, 1, len(@string) -1)
结果:

testing, testing, testing
编辑:

您可以使用以下选项:

select substring(c, 1, len(c) -1)
from
(
  select 
    (Case When col1 = '1' Then 'Case 1,' Else '' End) +
    (Case When Col2 = '2' Then 'Case 2,' Else '' End) +
    (Case When Col3 = '4' Then 'Case 4,' Else '' End)  
    as C
  from t
) x

请参见

好吧,不要删除最后一个逗号。请删除第一个:

  • 使用:

  • 使用:


如果不声明变量,如何处理?您将用您的值替换@string变量。请再次查看上面的问题。我正在连接select语句中的字段。我已经使用了子字符串,但如何定义concat的长度呢string@user1327064请参阅我的编辑。您可以将其设置为子查询,也可以在子字符串中重复CASE语句。谢谢,但我的问题中的查询只占整个存储过程的5%。在subquerybeautiful中很难再次重复CLUSE所在的位置。我再给你23K(但愿我能)。太棒了!对于SUBSTRING,我必须重复整个表达式,但是使用STUFF()更简洁。
SELECT
  STUFF(
    (CASE col1 & 1 WHEN 1 THEN ',Case 1' ELSE '' END)
    + (CASE col1 & 2 WHEN 2 THEN ',Case 2' ELSE '' END)
    + (CASE col1 & 4 WHEN 4 THEN ',Case 4' ELSE '' END),
    1,
    1,
    ''
  ) AS [Case]
FROM table_01
SELECT
  SUBSTRING(
    (CASE col1 & 1 WHEN 1 THEN ',Case 1' ELSE '' END)
    + (CASE col1 & 2 WHEN 2 THEN ',Case 2' ELSE '' END)
    + (CASE col1 & 4 WHEN 4 THEN ',Case 4' ELSE '' END),
    2,
    999999  /* not necessary to calculate LEN()-1, any value
               that is definitely greater than that will do */
  ) AS [Case]
FROM table_01