2

在这种情况下,我只需要删除最后一个逗号 (,) 字符。

我尝试了Substring, Left, and 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
4

2 回答 2

5

好吧,只是不要删除最后一个逗号。改为删除第一个:

  • 使用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
    
  • 使用SUBSTRING()

    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
    
于 2012-07-11T19:27:50.507 回答
3

您可以使用以下内容,它使用长度减一来为您提供所需的长度:

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

请参阅带有演示的 SQL Fiddle

于 2012-07-11T19:02:00.187 回答