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

次を使用できます。これは、長さから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

SQL FiddlewithDemoを参照してください

于 2012-07-11T19:02:00.187 に答える