在 SQL Server 中分割分隔符字符串
SQL Server 缺少原生字符串分割函数,这在处理分隔符字符串时带来挑战。然而,我们可以巧妙地利用 PARSENAME 函数来解决这个问题。
要按分隔符(例如空格)分割像 "Hello John Smith" 这样的字符串并访问特定索引处的项目,请按照以下步骤操作:
<code class="language-sql">REPLACE('Hello John Smith', ' ', '.')</code>
<code class="language-sql">SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2)</code>
此方法通过创建一个只有一个列的临时表来实现,其中每个值代表原始字符串的一个片段。但是,需要注意的是,如果原始字符串已经包含句点字符,则此方法可能不适用。
第三方解决方案
或者,您可以考虑使用专门用于字符串分割的用户定义函数 (UDF)。这种方法提供了更大的灵活性和可靠性。
以下是使用指定分隔符分割字符串的 UDF 示例:
<code class="language-sql">CREATE FUNCTION Split(@String VARCHAR(MAX), @Delimiter VARCHAR(1)) RETURNS TABLE AS RETURN (SELECT Item FROM ( SELECT ROW_NUMBER() OVER (ORDER BY r.rn) AS rn, LEFT(s, CHARINDEX(@Delimiter, s) - 1) AS Item FROM (SELECT @String AS s, 1 AS rn UNION ALL SELECT SUBSTRING(@String, CHARINDEX(@Delimiter, @String) + 1, LEN(@String)), rn + 1 FROM Split(@String, @Delimiter)) AS r WHERE s IS NOT NULL ) AS t)</code>
使用方法示例:
要使用分隔符 " " 分割字符串 "Hello John Smith",请执行以下查询:
<code class="language-sql">SELECT * FROM Split('Hello John Smith', ' ')</code>
此查询将返回一个包含两列的表:rn(项目的索引)和 Item(项目的值)。
以上是如何在没有本机拆分函数的情况下在 SQL Server 中拆分分隔字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!