SqlServer 字符串分割

在 SQL Server 中,如果你想处理一个包含逗号分隔值的字符串列,并将其转换为多行结果,你可以使用字符串函数和递归的公共表表达式(CTE)或 XML 方法。

方法一:使用递归 CTE

WITH SplitStrings AS  (      SELECT           ID, -- 假设你的表还有一个ID列或其他唯一标识列          0 AS StartPos,          CHARINDEX(',', CommaSeparatedColumn) AS EndPos,          CommaSeparatedColumn AS CurrentString      FROM YourTable      UNION ALL      SELECT           ID,          EndPos + 1,          CHARINDEX(',', CurrentString, EndPos + 1),          SUBSTRING(CurrentString, EndPos + 1, LEN(CurrentString) - EndPos - (CASE WHEN CHARINDEX(',', CurrentString, EndPos + 1) = 0 THEN 0 ELSE CHARINDEX(',', CurrentString, EndPos + 1) - EndPos - 1 END))      FROM SplitStrings      WHERE EndPos > 0  )  SELECT       ID,      RTRIM(LTRIM(SUBSTRING(CurrentString, StartPos, CASE WHEN EndPos > 0 THEN EndPos - StartPos ELSE LEN(CurrentString) - StartPos END))) AS SplitValue  FROM SplitStrings  WHERE       CurrentString <> ''  ORDER BY ID, StartPos;

方法二:使用 XML 方法

SELECT       ID, -- 假设你的表还有一个ID列或其他唯一标识列      LTRIM(RTRIM(B.i.value('.', 'VARCHAR(MAX)'))) AS SplitValue  FROM   (      SELECT           ID,           CAST('<i>' + REPLACE(CommaSeparatedColumn, ',', '</i><i>') + '</i>' AS XML) AS x      FROM YourTable  ) A  CROSS APPLY x.nodes('i') AS B(i);

注意事项

  • 这两种方法在处理大量数据或非常长的字符串时可能不是最高效的。如果你经常需要执行此类操作,可能需要考虑使用其他方法,如规范化数据模型(即创建一个新表来存储分割后的值)。
  • 在使用递归 CTE 时,请注意 SQL Server 中的最大递归级别限制(默认为 100)。如果你的字符串包含超过此限制的逗号分隔值,你需要调整 OPTION (MAXRECURSION 0) 以允许无限制的递归(但请注意,这可能会增加资源消耗和查询时间)。
  • 在处理用户输入时,始终确保对输入进行验证和清理,以防止 SQL 注入等安全漏洞。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/90779.html

(0)
guozi's avatarguozi
上一篇 2024年6月7日 上午10:51
下一篇 2024年6月7日 上午11:07

相关推荐

  • 萧山森与海二手房,萧山森与海房价

    萧山SEO,听起来是不是很奇怪?但如果你想在网络世界中找到自己的位置,你需要了解它。搜索引擎优化(简称SEO)是指优化网站的内容和结构,以提高其在搜索引擎中的排名,从而吸引更多的访…

    行业资讯 2024年3月24日
    0
  • 液冷服务器

    随着网络安全加速行业的不断发展,各种新兴技术也不断涌现,其中一种备受瞩目的技术就是液冷服务器。那么什么是液冷服务器?它又有哪些优势和不足?更重要的是,液冷技术在网络安全加速中扮演着…

    行业资讯 2024年4月16日
    0
  • 承重墙被敲掉了怎么办,承重墙被砸怎么办赔偿

    近日,互联网行业发生了一件令人震惊的事件。 ——处承重墙被毁。这座曾经被业界称为“承重墙”的建筑结构,却遭受了如此严重的破坏。那么,到底是什么原因导致承重墙倒塌呢?遇到这样的突发事…

    行业资讯 2024年5月10日
    0
  • 上海门户网站在线服务,上海网站建设推广服务

    相信很多人都听说过建设上海门户网站这个重要话题。上海这座先进城市的门户网站建设也是必不可少的一环。那么如何选择合适的门户网站建设公司呢?需要做哪些准备?预算和费用又如何呢?我们一起…

    行业资讯 2024年4月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注