考虑一个包含名称的数据库表,有三行:
彼得·保罗·玛丽
有没有简单的方法把它变成一串彼得,保罗,玛丽?
在尝试连接一对多关系的两个表时,我遇到了类似的问题。在SQL 2005中,我发现了XML PATH方法可以非常容易地处理行连接。
如果有一个叫STUDENTS的表
SubjectID StudentName---------- -------------1玛丽1约翰1山姆2阿莱2爱德华。
我期望的结果是:
SubjectID StudentName---------- -------------1玛丽,约翰,山姆2阿莱,爱德华。
我使用了下面的t-sql:
选择主要。SubjectID,左(Main.Students Len (Main.Students)-1)作为“学生”从(选择截然不同的ST2。SubjectID (选择相约。StudentName+”、“作为(文本())从dbo。学生相约在哪里相约。SubjectID=ST2。SubjectID订单通过相约。SubjectID为XML路径(''))(学生)从dbo。学生ST2)[主要]
如果可以连接开头的逗号并使用子字符串,则可以以更紧凑的方式完成同样的工作为了跳过第一个,所以你不需要做一个子查询:
选择截然不同的ST2。SubjectID,子字符串( (选择”、“+相约。StudentName作为(文本())从dbo。学生相约在哪里相约。SubjectID=ST2。SubjectID订单通过相约。SubjectID为XML路径('')),2,1000)(学生)从dbo。学生ST2