sql server字符串拆分
时间: 2023-08-26 22:05:56 浏览: 76
在 SQL Server中,可以使用不同的方法来拆分字符串。以下是一些常用的方法:
1. 使用SUBSTRING和CHARINDEX函数:这种方法适用于字符串中的分隔符是固定的。您可以使用CHARINDEX函数找到分隔符的位置,并使用SUBSTRING函数将字符串拆分为子字符串。重复此步骤,直到将整个字符串拆分为所需的部分。
例如,假设您有一个以逗号分隔的字符串'apple,banana,orange',您可以使用以下查询将其拆分为三个部分:
```sql
DECLARE @str VARCHAR(100) = 'apple,banana,orange'
SELECT
SUBSTRING(@str, 1, CHARINDEX(',', @str) - 1) AS Part1,
SUBSTRING(@str, CHARINDEX(',', @str) + 1, LEN(@str) - CHARINDEX(',', @str) - LEN(REPLACE(@str, ',', ''))) AS Part2,
SUBSTRING(@str, CHARINDEX(',', @str, CHARINDEX(',', @str) + 1) + 1, LEN(@str) - CHARINDEX(',', @str, CHARINDEX(',', @str) + 1) - LEN(REPLACE(@str, ',', ''))) AS Part3
```
2. 使用STRING_SPLIT函数(仅适用于SQL Server 2016及更高版本):从SQL Server 2016开始,引入了STRING_SPLIT函数,它可以直接将字符串拆分为多个行。您可以使用此函数将字符串拆分为表格,并使用SELECT语句检索每个部分。
例如,使用STRING_SPLIT函数拆分字符串'apple,banana,orange':
```sql
SELECT value AS Part
FROM STRING_SPLIT('apple,banana,orange', ',')
```
3. 使用XML和XQuery:这种方法将字符串转换为XML,并使用XQuery从XML中检索所需的部分。
例如,使用XML和XQuery拆分字符串'apple,banana,orange':
```sql
DECLARE @xml XML
SET @xml = '<root><part>' + REPLACE('apple,banana,orange', ',', '</part><part>') + '</part></root>'
SELECT
t.c.value('.', 'VARCHAR(100)') AS Part
FROM @xml.nodes('/root/part') t(c)
```
这些是一些常见的字符串拆分方法,您可以根据您的需求选择适合的方法。请注意,每种方法都有其自己的优缺点,请根据您的场景进行选择。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)