在SQL查询中检索逗号分隔的数值以匹配记录。

17 浏览
0 Comments

在SQL查询中检索逗号分隔的数值以匹配记录。

我有一个名为SerialNos的表,包含以下列:Id、Parent_Id、SerialNo

同一个Parent_Id下会有不同的SerialNo

例如:

Id     Parent_Id    SerialNo       
1          16          abc              
2          16          def             
3          23          hij              
4          23          klm    
5          23          nop      

我只想检索特定Parent_Id下以逗号分隔的SerialNo。

例如,如果传递的Parent_Id为16,则输出应为:'abc,def'

如果传递的Parent_Id为23,则输出应为:'hij,klm,nop'

0
0 Comments

原因:出现问题的原因是需要从数据库中检索匹配记录的逗号分隔值。

解决方法:可以使用以下查询语句来检索匹配记录的逗号分隔值,在sql-server 2008中适用(替换TableA为表名,Parent_Id为父ID):

select distinct STUFF(ISNULL((SELECT ', ' + x.SerialNo
                FROM TableA x
               WHERE x.Parent_Id= t.Parent_Id
            GROUP BY x.SerialNo
             FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '')
from TableA t
where Parent_Id = 16

0
0 Comments

在SQL查询中,有时候需要检索匹配记录的逗号分隔值。由于这种需求的出现,导致了以下的原因和解决方法。

原因:

在某些情况下,我们需要将数据库中的多个记录值以逗号分隔的形式检索出来。这可能是因为我们需要将这些值用于其他用途,例如构建动态的SQL查询语句或生成报表等。

解决方法:

为了实现这个目标,我们可以使用以下方法来检索逗号分隔的值:

1. 使用COALESCE函数:COALESCE函数用于返回参数列表中的第一个非空值。通过将COALESCE函数与连接运算符+和WHERE子句一起使用,我们可以将多个记录值连接起来并以逗号分隔的形式返回。

下面是一个示例代码,演示了如何使用COALESCE函数来检索逗号分隔的值:

DECLARE @csvString varchar(1000)
SELECT @csvString = COALESCE(@csvString+',','') + SerialNo
FROM SerialNos
WHERE Parent_Id = 23
SELECT @csvString

在上面的示例代码中,我们首先声明了一个变量@csvString,用于存储逗号分隔的值。然后,我们使用COALESCE函数将每个SerialNo值连接到@csvString变量中,并使用WHERE子句筛选出与Parent_Id = 23匹配的记录。最后,我们通过SELECT语句检索出@csvString变量的值,即逗号分隔的记录值。

2. 处理尾随逗号:在上述方法中,如果结果集中的最后一个值为空,那么可能会导致逗号后面有一个尾随逗号。为了处理这种情况,我们可以使用TRIM函数或其他字符串处理函数来去除尾随逗号。

通过使用COALESCE函数和WHERE子句,我们可以在SQL查询中检索逗号分隔的值。如果结果集中有尾随逗号,我们可以使用字符串处理函数来去除它。这样,我们就可以满足检索逗号分隔值的需求。

0
0 Comments

在SQL查询中检索逗号分隔的值的问题可能出现的原因是,数据库服务器的函数或方法不支持直接检索逗号分隔的值。解决方法是使用特定数据库服务器提供的函数或方法来实现此功能。

例如,如果使用的是MySQL数据库服务器,可以使用group_concat函数。通过设置逗号为分隔符,可以得到所需的结果。如果使用的是其他数据库服务器,需要查阅其文档,可能会有类似的功能。需要注意的是,某些数据库可能没有此函数。

如果使用的是SQL Server 2008,而group_concat或类似的函数不可用,可以尝试通过参考链接中的方法来实现此功能。

对于这个问题已经被问过很多次的回答,可以给一个负分。但是,提问者在提问之前应该先在Stack Overflow上搜索一下。

这个回答不符合应该受到负分的标准,因此给一个正分。

根据不同的数据库服务器,可以使用不同的函数或方法来实现在SQL查询中检索逗号分隔的值的功能。在遇到类似问题时,应该先查阅相关文档或搜索已有的解决方案。

0