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

T-SQL:与字符串连接相反-如何将字符串拆分为多个记录

曾修真
2023-03-14
问题内容

我想知道您将如何解决相反的问题:将逗号分隔的字符串拆分为数据行:

可以说我有表:

userTypedTags(userID,commaSeparatedTags) 'one entry per user
tags(tagID,name)

并想将数据插入表中

userTag(userID,tagID) 'multiple entries per user

问题答案:

这个问题的解决方案记录在这里,包括这个小gem:

CREATE FUNCTION dbo.Split (@sep char(1), @s varchar(512))
RETURNS table
AS
RETURN (
    WITH Pieces(pn, start, stop) AS (
      SELECT 1, 1, CHARINDEX(@sep, @s)
      UNION ALL
      SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
      FROM Pieces
      WHERE stop > 0
    )
    SELECT pn,
      SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
    FROM Pieces
  )


 类似资料:
  • 问题内容: 将字符串拆分为流的 最佳 方法是什么? 我看到了这些变化: 我的优先事项是: 坚固性 可读性 性能 一个完整的可编译示例: 问题答案: / 由于返回数组,因此我始终建议您使用流式处理数组的规范用法。 / 是一个 varargs 方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题

  • 我有一个字符串和一个ArrayList。字符串中有几个单词,用空格隔开,例如“firstword second third”。我想将字符串拆分为几个部分,并将“piece”字符串添加到ArrayList中。

  • 问题内容: 我有以下SQL脚本: 然后单击!Execute之后,我得到了这些: 我也尝试了非联合版本,并得到了相同的错误: … 我所期望的是,我应该获得一个ID,其ID来自@ test.ID的表,并且@ test.data中每个逗号分隔的值都拆分成自己的记录,并将其值放入dataItem字段中。 我该怎么做? 我需要使用游标吗? 我在http://pastebin.com/f7dd6350f粘贴了

  • 问题内容: 我有这串 如何将此字符串拆分为每个子字符串包含2个字符的子字符串?我很困惑,因为我找不到分隔符来分隔它们。 问题答案:

  • 问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:

  • 问题内容: 拥有5列地址数据。我需要将这些字段连接到一个地址中,如果它们之间存在空格,则它们之间应有空格。如果该列的值为空,则应跳过该列,不要输入任何空格。 我想做的是有一个变量,并将其分配给第一列street_number的值,然后当我移至下一列street_ext时,如果它不为null,我想检查一下是否该变量为null,如果不是,则在其后附加一个空格和值…以此类推。 我很生疏,可能会朝正确的方