删除SELECT语句中的最后一个逗号

pnd*_*uke 2 sql sql-server

我有一个选择查询,如下所示:

SELECT 
ROW_NUMBER() OVER (ORDER BY T.TitleId) as Row, 
T.TitleId as TitleID, 
T.TitleSort as TitleName, 
TT.Description as TitleType, 
TS.Description as TitleOrigin,
--get genres
(select Genre.Description + ', ' from Genre where GenreId IN
(Select GenreId from TitleGenre WHERE TitleId = T.TitleId)
group by Genre.Description for xml path('')) AS Genres, ....
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但我找不到摆脱最后一个逗号的方法.这是返回的行的样子:

Action, Drama, Romance, 
Run Code Online (Sandbox Code Playgroud)

我需要在不使用函数或声明变量的情况下删除最后一个逗号,就在查询中.那可能吗?提前感谢您的回答.

sge*_*des 9

这样的东西应该接近 - 基本上将逗号移到开头,然后用STUFF删除它:

STUFF(
        (
        select ', ' + Genre.Description from Genre where GenreId IN
(Select GenreId from TitleGenre WHERE TitleId = T.TitleId)
group by Genre.Description for xml path('')
        ), 1, 2, '') 
Run Code Online (Sandbox Code Playgroud)

祝好运.


Tar*_*ryn 5

您始终可以使用以下使用Left()Len():

select *,
  left(Genres, len(Genres)-1) as Genres
from 
(
  SELECT 
  ROW_NUMBER() OVER (ORDER BY T.TitleId) as Row, 
  T.TitleId as TitleID, 
  T.TitleSort as TitleName, 
  TT.Description as TitleType, 
  TS.Description as TitleOrigin,
  --get genres
  (select Genre.Description + ', ' from Genre where GenreId IN
  (Select GenreId from TitleGenre WHERE TitleId = T.TitleId)
  group by Genre.Description for xml path('')) AS Genres, ....
) src
Run Code Online (Sandbox Code Playgroud)