SQL server 根据/和#拆分字符串不能用STRING_SPLIT函数
时间: 2024-03-01 18:52:56 浏览: 221
如果你使用的 SQL Server 版本不支持 `STRING_SPLIT()` 函数,也可以使用自定义函数来实现字符串拆分。下面是一个使用自定义函数进行字符串拆分的示例:
```
-- 创建自定义函数
CREATE FUNCTION dbo.SplitString(@str VARCHAR(MAX), @delimiter CHAR(1))
RETURNS @result TABLE (value VARCHAR(MAX))
AS
BEGIN
DECLARE @pos INT
SET @pos = CHARINDEX(@delimiter, @str)
WHILE @pos > 0
BEGIN
INSERT INTO @result(value) VALUES(SUBSTRING(@str, 1, @pos - 1))
SET @str = SUBSTRING(@str, @pos + 1, LEN(@str))
SET @pos = CHARINDEX(@delimiter, @str)
END
INSERT INTO @result(value) VALUES(@str)
RETURN
END
GO
-- 根据 / 拆分字符串
SELECT value FROM dbo.SplitString('your/string/to/split', '/')
-- 根据 # 拆分字符串
SELECT value FROM dbo.SplitString('your#string#to#split', '#')
```
其中,`dbo.SplitString()` 是一个自定义函数,用于根据指定的分隔符拆分字符串。函数将字符串拆分成多个部分,并将这些部分存储在一个表变量 `@result` 中。在主语句中,可以使用 `SELECT` 语句来查询 `@result` 变量中的值。
需要注意的是,自定义函数的效率可能不如内置函数 `STRING_SPLIT()`,尤其是在处理大量数据时。如果你的 SQL Server 版本支持 `STRING_SPLIT()` 函数,建议使用内置函数进行字符串拆分。
阅读全文