如何在SQL Server2012中用一条查询语句将字符串CCARTONNO=‘B4K270761/B4K270762/B4K270763/B4K270764/B4K270765’ 分割成多个单独的子串?
时间: 2024-12-23 09:22:04 浏览: 7
在SQL Server 2012中,可以使用`STRING_SPLIT()`函数来分割字符串,这个函数从2016版本开始可用,如果在较早版本中需要类似功能,可以考虑自定义函数或者使用T-SQL的内置函数结合其他技术如`REPLACE()`, `PATINDEX()`等。
假设你想得到单独的子串,并且分隔符是`'/`,你可以使用以下示例:
```sql
DECLARE @str VARCHAR(100) = 'B4K270761/B4K270762/B4K270763/B4K270764/B4K270765';
SELECT value
FROM STRING_SPLIT(@str, '/')
```
这将返回一个表,其中每一行都是原始字符串中的一个单独子串。
如果你的SQL Server版本低于2016,那么可能需要一个更复杂一点的查询,例如:
```sql
;WITH cte AS (
SELECT
SUBSTRING(@str, number, CHARINDEX('/', @str + '/', number) - number + 1)
FROM master..spt_values t1
INNER JOIN master..spt_values t2 ON t1.type = 'P' AND t2.type = 'L' AND t2.number BETWEEN 1 AND LEN(@str) + 1
)
SELECT value
FROM cte
WHERE value IS NOT NULL
```
在这个例子中,我们使用系统表`spt_values`来生成一个序列,然后通过`SUBSTRING()`函数和`CHARINDEX()`函数分割字符串。
阅读全文