T-SQL 中的字串分割技巧
在 SQL 中,將逗號分隔的字串拆分成多行是常見任務。 T-SQL(Microsoft 的 SQL 實作)提供了多種方法來實現此目標。
使用 XML
一種方法是將字串轉換為 XML。 XML 結構允許輕鬆地將各個值提取為 XML 節點:
<code class="language-sql">DECLARE @xml xml, @str varchar(100), @delimiter varchar(10) SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15' SET @delimiter = ',' SET @xml = cast(('<X>'+replace(@str, @delimiter, '</X><X>')+'</X>') as xml) SELECT C.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as X(C)</code>
使用 CTE (公用表表達式)
另一種方法是使用 CTE 建立一系列表示字串字元的行:
<code class="language-sql">DECLARE @str varchar(100), @delimiter varchar(10) SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15' SET @delimiter = ',' ;WITH cte AS ( SELECT 0 a, 1 b UNION ALL SELECT b, CHARINDEX(@delimiter, @str, b) + LEN(@delimiter) FROM CTE WHERE b > a ) SELECT SUBSTRING(@str, a, CASE WHEN b > LEN(@delimiter) THEN b - a - LEN(@delimiter) ELSE LEN(@str) - a + 1 END) value FROM cte WHERE a > 0</code>
其他方法
T-SQL 中分割字串的其他方法包括使用 CHARINDEX() 函數和 REGEX_SPLIT_TO_TABLE() 函數(在 SQL Server 2016 中引入)。如需更多範例和討論,請參閱相關文章,例如「如何拆分逗號分隔的字串?」
以上是如何在 T-SQL 中將逗號分隔的字串拆分為行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!