Sql Server分割字符串函数
时间:2021-07-01 10:21:17
帮助过:2人阅读
Description: 分割字符串函数
-- SELECT * FROM dbo.Split(‘a,b,c,d,e,f,g‘,‘,‘)
-- =============================================
CREATE FUNCTION [dbo].
[Split] (
@Text VARCHAR(
8000) ,
@Sign NVARCHAR(
4000) )
RETURNS @tempTable TABLE ( ID
INT IDENTITY(
1,
1)
PRIMARY KEY ,
[TEMPVAL] VARCHAR(
4000) )
AS BEGIN DECLARE @StartIndex INT --开始查找的位置
DECLARE @FindIndex INT --找到的位置
DECLARE @Content VARCHAR(
4000)
--找到的值
SET @StartIndex = 1 --T-SQL中字符串的查找位置是从1开始的
SET @FindIndex = 0 --开始循环查找字符串逗号
WHILE (
@StartIndex <= LEN(
@Text))
BEGIN --返回值是找到字符串的位置
SELECT @FindIndex = CHARINDEX(
@Sign,
@Text,
@StartIndex)
--判断有没找到 没找到返回0
IF (
@FindIndex = 0
OR @FindIndex IS NULL )
BEGIN --如果没有找到者表示找完了
SET @FindIndex = LEN(
@Text)
+ 1 END --初始化下次查找的位置
SET @Content = LTRIM(
RTRIM(
SUBSTRING(
@Text,
@StartIndex,
@FindIndex - @StartIndex)))
SET @StartIndex = @FindIndex + 1 --把找的的值插入到要返回的Table类型中
INSERT INTO @tempTable (
[TEMPVAL])
VALUES (
@Content)
END RETURN END
Sql Server分割字符串函数
标签: