sql StringSplitWithIndex函数(SELECT * from StringSplitWithIndex('黄色,蓝色,黑色',','))

--SELECT * from StringSplitWithIndex(‘黄色,蓝色,黑色‘,‘,‘)

CREATE function [dbo].[StringSplitWithIndex]
(
@str nvarchar(max), --字符串
@spliter nvarchar(10)
) --分割符
returns @tb table(RowIndex int identity(1,1),Item nvarchar(256)) --返回对应表
AS
BEGIN
DECLARE @Num int,@Pos int, @NextPos int
SET @Num = 0
SET @Pos = 1
WHILE(@Pos <= LEN(@str))
BEGIN
SELECT @NextPos = CHARINDEX(@spliter, @str, @Pos)
IF (@NextPos = 0 OR @NextPos IS NULL)
SELECT @NextPos = LEN(@str) + 1
INSERT INTO @tb VALUES(RTRIM(LTRIM(SUBSTRING(@str, @Pos, @NextPos - @Pos))))
SELECT @Pos = @NextPos+1
END
return
END

sql StringSplitWithIndex函数(SELECT * from StringSplitWithIndex('黄色,蓝色,黑色',','))

时间: 2024-10-31 07:07:41

sql StringSplitWithIndex函数(SELECT * from StringSplitWithIndex('黄色,蓝色,黑色',','))的相关文章

sql函数 StringSplit(SELECT * from Split(&#39;黄色,蓝色,黑色&#39;,&#39;,&#39;))

create function [dbo].[StringSplit]( @str nvarchar(max), --字符串 @spliter nvarchar(10)) --分割符returns @tb table(Item nvarchar(256)) --返回对应表ASBEGIN DECLARE @Num int,@Pos int, @NextPos int SET @Num = 0 SET @Pos = 1 WHILE(@Pos <= LEN(@str)) BEGIN SELECT @N

SQL开窗函数

开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决.目前在 MSSQLServer.Oracle.DB2 等主流数据库中都提供了对开窗函数的支持,不过非常遗憾的是 MYSQL 暂时还未对开窗函数给予支持. 开窗函数简介:与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值

SQL FIRST() 函数

FIRST() 函数 FIRST() 函数返回指定的字段中第一个记录的值. 提示:可使用 ORDER BY 语句对记录进行排序. SQL FIRST() 语法 SELECT FIRST(column_name) FROM table_name SQL FIRST() 实例 我们拥有下面这个 "Orders" 表: O_Id OrderDate OrderPrice Customer 1 2008/12/29 1000 Bush 2 2008/11/23 1600 Carter 3 20

SQL AVG 函数

定义和用法 AVG 函数返回数值列的平均值.NULL 值不包括在计算中. SQL AVG() 语法 SELECT AVG(column_name) FROM table_name SQL AVG() 实例 我们拥有下面这个 "Orders" 表: O_Id OrderDate OrderPrice Customer 1 2008/12/29 1000 Bush 2 2008/11/23 1600 Carter 3 2008/10/05 700 Bush 4 2008/09/28 300

SQL MAX() 函数

MAX() 函数 MAX 函数返回一列中的最大值.NULL 值不包括在计算中. SQL MAX() 语法 SELECT MAX(column_name) FROM table_name 注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值. SQL MAX() 实例 我们拥有下面这个 "Orders" 表: O_Id OrderDate OrderPrice Customer 1 2008/12/29 1000 Bush 2 2008/11/23 1600 Ca

SQL NOW() 函数

NOW() 函数 NOW 函数返回当前的日期和时间. 提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间. SQL NOW() 语法 SELECT NOW() FROM table_name SQL NOW() 实例 我们拥有下面这个 "Products" 表: Prod_Id ProductName Unit UnitPrice 1 gold 1000 g 32.35 2 silver 1000 g 11.56 3 copper 1

SQL MIN() 函数

MIN() 函数 MIN 函数返回一列中的最小值.NULL 值不包括在计算中. SQL MIN() 语法 SELECT MIN(column_name) FROM table_name 注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值. SQL MIN() 实例 我们拥有下面这个 "Orders" 表: O_Id OrderDate OrderPrice Customer 1 2008/12/29 1000 Bush 2 2008/11/23 1600 Ca

SQL LAST() 函数

LAST() 函数 LAST() 函数返回指定的字段中最后一个记录的值. 提示:可使用 ORDER BY 语句对记录进行排序. SQL LAST() 语法 SELECT LAST(column_name) FROM table_name SQL LAST() 实例 我们拥有下面这个 "Orders" 表: O_Id OrderDate OrderPrice Customer 1 2008/12/29 1000 Bush 2 2008/11/23 1600 Carter 3 2008/1

SQL FORMAT() 函数

FORMAT() 函数 FORMAT 函数用于对字段的显示进行格式化. SQL FORMAT() 语法 SELECT FORMAT(column_name,format) FROM table_name 参数 描述 column_name 必需.要格式化的字段. format 必需.规定格式. SQL FORMAT() 实例 我们拥有下面这个 "Products" 表: Prod_Id ProductName Unit UnitPrice 1 gold 1000 g 32.35 2 s