在 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中文網其他相關文章!