十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
如楼上给的 单独分割一部分 也可用下面的函数 分割出一个集合
网页设计是网站建设的前奏,好的网页设计更深度的剖析产品和设计风格定位,结合最新的网页设计流行趋势,与WVI应用标准,设计出具企业表现力,大器而深稳的网站界面设。成都创新互联公司自2013年起,是成都网站建设公司:提供企业网站设计,成都品牌网站建设,营销型企业网站建设方案,成都响应式网站建设,微信小程序,专业建站公司做网站。
-- 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
分割“版区负责人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,把数据搞成你所要的结果
在SQL Server2000 中事务复制的改进主要包括以下几个方面.并行快照处理保证即使在创建初始快照时仍可对出版表进行修改提高错误处理能力可以跳过指定的错误继续进行数据复制.在订购者处对复制数据进行确认包括对垂直分割的确认通过SQL Server Enterprise Manager 也可以使用确认
---
以上,希望对你有所帮助。
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