sql - 从字符串 SQL Server 解析列表
问题描述
我一直在使用这个函数来解析字符串列表;有没有更有效的方法来做到这一点?
这是为了解析具有多个值的字符串。
这就是我使用该功能的方式
select *
from dbo.fn_getlistfromstring(''1,3,2,46,Mums the Order,bb'')
功能代码:
CREATE FUNCTION [dbo].[fn_getlistfromstring]
(@string NVARCHAR(4000),
@separator NVARCHAR(50))
RETURNS @list TABLE
(value NVARCHAR(200) collate database_default)
AS
BEGIN
DECLARE @working NVARCHAR(4000), @value NVARCHAR(150)
DECLARE @startpos INT, @endpos INT, @len INT, @seplen INT
IF LTRIM(RTRIM(ISNULL(@string, ''))) <> ''
BEGIN
SET @seplen = LEN(@separator)
SET @working = LTRIM(RTRIM(ISNULL(@string, '')))
IF CHARINDEX(@separator, @working, 1) <> 0
BEGIN
SET @len = LEN(@working)
SET @startpos = 1
set @endpos = 1
set @value = ''
while @endpos < @len and @startpos < @len
begin
set @endpos = charindex(@separator, @working,@startpos)
if @endpos = 0
set @endpos = @len + 1
set @value = ltrim(rtrim(substring( @working, @startpos, (@endpos - @startpos))))
INSERT into @list (value) values (@value)
set @startpos = @endpos + @seplen
end
end
else -- only one
INSERT into @list (value) values (@working)
end
RETURN
END
GO
解决方案
推荐阅读
- entity-framework - WebAPI ,实体框架 - 为每个实体填充审计字段(CreatedOn、CreatedByUserId、ModifiedOn、ModifiedByUserId)
- reactjs - 如果一次满足某些条件,则停止在状态上执行映射功能
- reactjs - 反应绑定错误:FontChooser.js:15 Uncaught TypeError: this.setstate is not a function
- swiftui - SwiftUI - edgesIgnoringSafeArea 在 iOS 13.4 中的行为不同
- java - 在两种情况下,Selenium 无法通过 @FindBys 注释找到元素
- java - Mysql java不能使用另一个类的连接方法
- c# - 使用 EFCore 3 更新 DDD 中的实体
- bash - 在 Windows 64 位的 cygwin 上使用 `make` 时出错:/usr/bin/sh: -c: line 0: 意外标记 `(' 附近的语法错误
- javascript - 使用 Promise all 填充下拉列表
- java - 如何使用spring data jpa删除特定的语句块