用于拆分字符串的SQL查询
我有字符串“ABCD.EFGH.IJKL.MNOP”。我正在寻找一个sql查询,从中可以得到 第一部分(“ABCD”)、第二部分(“EFGH”)、第三部分(“IJKL”)、第四部分(“LMNOP”)来自大量数据。因此,必须记住性能 多谢各位 问候,,用于拆分字符串的SQL查询,sql,sql-server-2005,split,Sql,Sql Server 2005,Split,我有字符串“ABCD.EFGH.IJKL.MNOP”。我正在寻找一个sql查询,从中可以得到 第一部分(“ABCD”)、第二部分(“EFGH”)、第三部分(“IJKL”)、第四部分(“LMNOP”)来自大量数据。因此,必须记住性能 多谢各位 问候,, James我假设您正在寻找MSSQL。您可以使用返回表变量的用户定义函数来实现这一点。试试这个 CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))
James我假设您正在寻找MSSQL。您可以使用返回表变量的用户定义函数来实现这一点。试试这个
CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
我假设您正在寻找MSSQL。您可以使用返回表变量的用户定义函数来实现这一点。试试这个
CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
Jeff Moden最近就此撰写了一系列文章,并对满足这一共同需求的最流行尝试进行了性能比较。查看这篇文章,了解其DelimitedSplit8K函数的最新一期和最新版本Jeff Moden最近就此写了一系列文章,并对满足这一共同需求的最流行尝试进行了性能比较。查看最新一期及其DelimitedSplit8K函数的最新版本,以明确说明:您希望按特定字符(.)进行拆分,而基于长度的拆分不起作用。是吗?是的,没错。我需要根据一个特殊字符(如“,”等)拆分字符串,并将其单独显示。可能的重复只是为了澄清:您正在寻找按特定字符(.)拆分的字符串,而基于长度的拆分将不起作用。是吗?是的,没错。我需要根据一个特殊字符(如“,”等)拆分一个字符串,并将其单独显示。非常感谢!可能重复!!如果没有自定义项,有什么方法可以使用呢?因为我必须在RDL文件中编写,单独创建函数可能是不可能的。@James:你能使用存储过程吗?非常感谢!!如果没有自定义项,有什么方法可以使用它,因为我必须在RDL文件中写入它,并且单独创建函数可能是不可能的。@James:你能使用存储过程吗?