当前位置: 首页 > 面试题库 >

如何将多行作为字符串放入一行?

祁承嗣
2023-03-14
问题内容

我有两个“一对多”表:

表格1

ID    Name
1     Abe
2     David
3     Orly

表2

ID    email
1     a@zz.com
1     ab@zz.com
1     abe@zz.com
2     dav@zz.com
2     d@zz.com
3     orly@zz.com
3     o@zz.com

我需要这样的输出:

1 Abe a@zz.com, ab@zz.com, abe@zz.com
2 David dav@zz.com, d@zz.com
3 Orly orly@zz.com, o@zz.com

我知道这行不通,因为内部SELECT不是单个字符串:

SELECT 
    ID, Name, 
    (SELECT email FROM Table2  WHERE Table2.ID = Table1.ID) AS emails 
FROM Table1

我尝试申请:

DECLARE @emails VARCHAR(999)

SELECT [ID],[Name], 
     (SELECT @emails = COALESCE(@emails + ', ', '') + [email] 
      FROM Table2) AS 'emails' 
FROM Table1

但没有运气。

应该如何解决呢?

谢谢。


问题答案:

实现这一目标的最巧妙的方法之一是将For XML Path和STUFF结合如下:

SELECT
    ID, Name, 
    Emails = STUFF((
        SELECT ', ' + Email FROM Table2 WHERE Table2.ID = Table1.ID
        FOR XML PATH ('')),1,2,'')
FROM Table1


 类似资料:
  • 我有一个string变量用来获取输入值。为了前任。 当我给出(约翰·乔尼)的价值时,它只显示约翰。有什么办法能弄到整根绳子吗?

  • 嗨,我的代码有一些问题,我需要接受一个3行的输入,并计算输入中“$”的数量。输入方法未注释为“scanf(”%[]s“,&userinput);”是唯一一个我发现采取所有3行输入,但我不能打破输入循环继续我的程序。 任何帮助都将不胜感激

  • 问题内容: 我如何将字符串分成多行,如下所示? 问题答案: Swift 4包括对多行字符串文字的支持。除换行符外,它们还可以包含未转义的引号。 较早版本的Swift不允许您在多行上使用单个文字,但可以在多行上将文字添加在一起:

  • 问题内容: 我的数据库中有一个带换行符的字符串。我想将该字符串转换为数组,并且对于每一行,在数组中跳转一个索引位置。 如果字符串是: 我想要的结果是这样的: 问题答案: 您可以使用功能,使用“ ”作为分隔符: 例如,如果您有这段代码: 您将获得以下输出: 请注意,您必须使用双引号字符串,因此实际上被解释为换行符。 (有关更多详细信息,请参见该手册页。)

  • 编程相对较新。我想读取一个URL,修改文本字符串,然后将其写入以行分隔的csv文本文件。 阅读 但我无法将相同的字符串写入文件——它只会变成一行(请参阅下面的循环,尝试1) 我想我正在寻找一种方法,在FileWriter或BufferedWriter循环中,将字符串finalDataA转换为数组字符串(即包括字符串后缀[0]),但我还没有找到这样一种方法,不会给出类型“不能”的错误将String转