sql - 如何在SQL中的字符串中添加逗号and

标签 sql loops replace sql-server-2012

我在 SQL Item_Name 中有一个字段,行为 ITEM1、ITEM2、ITEM3 和 ITEM4 我将这些行转换为具有逗号分隔值的单列,如 ITEM1、ITEM2、ITEM3、ITEM4。如何将此列转换为 ITEM1、ITEM2、ITEM3 和 ITEM4。我需要在最后一项中添加一个 and。我可以在循环中使用替换吗?

这是我的场景。 一切都是关于类(class)和先修类(class)

COURSE_ID   PRE_COURSE_ID    OPERATOR
--------------------------------------------
IT105       IT100            AND
IT105       IT101              
IT106       1T103
BM110       BM101            AND
BM110       BM102            AND
BM110       BM103
CC107       CC103            OR
CC107       CC104
-------------------------------------------------------

现在我期待如下输出;

COURSE_ID PRE_COURSE_ID
------------------------
IT105     IT100 and IT101
IT106     IT103
BM110     BM101,BM102 and BM103
CC107     CC103 OR CC104  

对于运算符“或”,即使有两个以上的类(class),也不需要逗号。

最佳答案

试试这个:

CREATE TABLE #tmp (name NVARCHAR(10))

INSERT INTO #tmp VALUES('ITEM1'),('ITEM2'),('ITEM3')

    SELECT STUFF((
            SELECT *
            FROM (
                SELECT ',' + name AS [text()]
                FROM #tmp
            )q
            FOR XML PATH('')
            ),1,1,'')
    DROP TABLE #tmp

关于sql - 如何在SQL中的字符串中添加逗号and,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37021852/

相关文章:

php - 将可变数量的字段插入数据库MYSQLI

javascript - 来自 JSON 数组的准确值

javascript - 在 JavaScript 中无限打印到控制台整数之间的值

loops - 语句和分支覆盖

javascript - Jquery 和 JSON : Replace section of JSON array

java - 我需要一个 SQL 查询来找到你可以用一组字母组成的所有单词,包括最多两个空白 block

mysql - 按月和年分组记录

sql - 从只有一种格式的数据库中的查询中获取 "Cannot resolve the collation conflict"错误

batch-file - 批处理 : replace a line in a text file

string - 用 Rust 中的矢量元素替换编号占位符?