sqlserver分割,sqlserver分割函数

sqlserver怎么把一个表中按分号隔开的字符串分成多行放在一个临时表中呢?

分割“版区负责人Id”,使其结果为

创新互联建站专注于岑巩企业网站建设,响应式网站,商城网站建设。岑巩网站建设公司,为岑巩等地区提供建站服务。全流程定制网站,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

版区Id    版区负责人Id

6            123

6            456

6            789

(这里,我想来想去,只有使用零时表+游标来实现,个人没有想到更好的方法)

CREATE FUNCTION [dbo].[fun_Split]

(

@str VARCHAR(MAX) ,

@split VARCHAR(10)

)

RETURNS TABLE

AS 

RETURN

(SELECT B.id FROM      ( SELECT    [value] = CONVERT(XML , 'v' + REPLACE(@str , @split , '/vv')

+ '/v')

) A

OUTER APPLY ( SELECT  id = N.v.value('.' , 'varchar(100)')

FROM    A.[value].nodes('/v') N ( v )

) B

)

GO

--2005以及以上的版本支持这种分割写法。

用xml path,把数据搞成你所要的结果

SQLserver用逗号隔开的数据如何改为分行

假设2016-01-01这话日期在单元格A1输入公式B1=VALUE(TEXT(YEAR(A1)MONTH(A1)DAY(A1),0))问题搞定纯手打,望采纳

sqlserver 怎么分割字符串

如楼上给的 单独分割一部分    也可用下面的函数 分割出一个集合

-- 1.0 拆分字符串 参数 @strSource要操作的字符串 @strSeparator分隔符

CREATE FUNCTION [dbo].fn_splitStr( @strSource NVARCHAR(4000),@strSeparator NVARCHAR(10) )

RETURNS @tbResult TABLE(id INT IDENTITY(1,1),rs NVARCHAR(1000))

AS

BEGIN

DECLARE @dwIndex INT,@strResult NVARCHAR(1000),@dwSeparatorLen INT=LEN(@strSeparator);

SET @dwIndex = CHARINDEX(@strSeparator,@strSource);-- 取得第一个分隔符的位置

WHILE @dwIndex0

BEGIN

SET @strResult = LEFT(@strSource,@dwIndex-1);

INSERT @tbResult VALUES(@strResult);

--将要操作的字符串去除已切分部分

SET @strSource = SUBSTRING(@strSource,@dwIndex+LEN(@dwIndex),LEN(@strSource));

SET @dwIndex = CHARINDEX(@strSeparator,@strSource); --循环量增加

END

--处理最后一节

IF LEN(@strSource)  0 INSERT @tbResult VALUES(@strSource)

RETURN;

END

GO

MS SQLserver水平,垂直分割问题?

在SQL Server2000 中事务复制的改进主要包括以下几个方面.并行快照处理保证即使在创建初始快照时仍可对出版表进行修改提高错误处理能力可以跳过指定的错误继续进行数据复制.在订购者处对复制数据进行确认包括对垂直分割的确认通过SQL Server Enterprise Manager 也可以使用确认

---

以上,希望对你有所帮助。

sqlserver有没有split函数

SQL Server Split函数

--Author:zc_0101

--说明:

--支持分割符多字节

--使用方法

--Select * FROM DBO.F_SQLSERVER_SPLIT('1203401230105045','0')

--select * from DBO.F_SQLSERVER_SPLIT('abc1234a12348991234','1234')

--Select * from DBO.F_SQLSERVER_SPLIT('ABC',',')

1 CREATE FUNCTION F_SQLSERVER_SPLIT(@Long_str NVARCHAR(MAX),@split_str NVARCHAR(100))

2 RETURNS @tmp TABLE(

3 ID inT IDENTITY PRIMARY KEY,

4 short_str NVARCHAR(MAX)

5 )

6 AS

7 BEGIN

8 DECLARE @short_str NVARCHAR(MAX),@split_str_length int,@split_str_Position_Begin int

9 SET @split_str_length = LEN(@split_str)

10 SET @Long_str=REPLACE(REPLACE(@Long_str,CHAR(10),''),CHAR(13),'')

11 IF CHARINDEX(@split_str,@Long_str)=1

12 SET @Long_str=STUFF(@Long_str,1,@split_str_length,'')

13 IF CHARINDEX(@split_str,@Long_str)=0

14 INSERT INTO @tmp SELECT @Long_str

15 ELSE

16 BEGIN

17 WHILE 10

18 BEGIN

19 SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)

20 SET @short_str=LEFT(@Long_str,@split_str_Position_Begin-1)

21 IF @short_str'' INSERT INTO @tmp SELECT @short_str

22 SET @Long_str=STUFF(@Long_str,1,@split_str_Position_Begin+@split_str_length-1,'')

23 SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)

24 IF @split_str_Position_Begin=0

25 BEGIN

26 IF LTRIM(@Long_str)''

27 INSERT INTO @tmp SELECT @Long_str

28 BREAK

29 END

30 END

31 END

32 RETURN

33 END


分享文章:sqlserver分割,sqlserver分割函数
网址分享:http://scyanting.com/article/dseoopp.html