Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在sql查询中添加删除最后一个字符的条件_Sql Server - Fatal编程技术网

Sql server 如何在sql查询中添加删除最后一个字符的条件

Sql server 如何在sql查询中添加删除最后一个字符的条件,sql-server,Sql Server,我有一张桌子 ID | OSTag 2145 | BMV123456,BMV234567,BMV123789,BMV124654,BMV456234, BMV908567, 5437 | DAD676776,DAD989898,DAD787656, 5452 | DAD123456, 质疑 现在,我想在我的sql查询中添加一个检查条件,即如果列OSTag的最后一项,则删除字符“,” Output result like this: ID | OSTag 2145 | BMV

我有一张桌子

ID   |  OSTag
2145 |  BMV123456,BMV234567,BMV123789,BMV124654,BMV456234, BMV908567,
5437 |  DAD676776,DAD989898,DAD787656,
5452 |  DAD123456,
质疑

现在,我想在我的sql查询中添加一个检查条件,即如果列OSTag的最后一项,则删除字符“,”

Output result like this:
ID   |  OSTag
2145 |  BMV123456,BMV234567,BMV123789,BMV124654,BMV456234, BMV908567
5437 |  DAD676776,DAD989898,DAD787656
5452 |  DAD123456

你可以用很多方法来做这件事。可能最简单的方法是使用LEFT

select LEFT(OSTag, len(OSTag) - 1)
我必须提到,将分隔值存储在单个列中违反了1NF,这是一个非常棘手的问题

SELECT DISTINCT 
     bag2.PassengerID
    ,STUFF(( SELECT ',' + bag1.OSTag  AS [text()] 
       FROM REZP8OD01.dbo.Baggage bag1
       WHERE bag1.PassengerID=bag2.PassengerID
       ORDER BY bag1.PassengerID FOR XML PATH('')), 1,1,'') [OSTag] 

FROM dbo.Baggage bag2
甚至更好

SELECT bag2.PassengerID
    ,STUFF(( SELECT ',' + bag1.OSTag 
             FROM REZP8OD01.dbo.Baggage bag1
             WHERE bag1.PassengerID=bag2.PassengerID
             ORDER BY bag1.PassengerID 
             FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'), 1,1,'') [OSTag] 
FROM dbo.Baggage bag2
GROUP BY bag2.PassengerID

你能帮我把它加到我的支票上吗?请使用M.Ali发布的东西会更容易一些,因为这里使用的是XML。
SELECT bag2.PassengerID
    ,STUFF(( SELECT ',' + bag1.OSTag 
             FROM REZP8OD01.dbo.Baggage bag1
             WHERE bag1.PassengerID=bag2.PassengerID
             ORDER BY bag1.PassengerID 
             FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'), 1,1,'') [OSTag] 
FROM dbo.Baggage bag2
GROUP BY bag2.PassengerID