欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【SQL Server TEXT、NTEXT字段拆分的问题】,下面是详细的分享!
SQL Server TEXT、NTEXT字段拆分的问题
SET NOCOUNT ON
CREATE TABLE #T (C NTEXT)
GO
INSERT INTO #T VALUES('')
GO
CREATE TABLE #T2 (C CHAR(8))
GO
DECLARE @S1 VARCHAR(8000),@S2 VARCHAR(8000),@I INT
SET @S1=''
SET @S2=''
SET @I=1
WHILE @I<=1000
BEGIN
SET @S1=@S1+'A'+RIGHT('0000000'+CAST(@I AS VARCHAR(5)),6)+','
SET @S2=@S2+'B'+RIGHT('0000000'+CAST(@I AS VARCHAR(5)),6)+','
SET @I=@I+1
END
DECLARE @P BINARY(16)
SELECT @P=TEXTPTR(C) FROM #T
UPDATETEXT #T.C @P NULL NULL @S1
UPDATETEXT #T.C @P NULL NULL @S2
SELECT DATALENGTH(C) FROM #T
DECLARE @DL INT
SET @DL=(SELECT DATALENGTH(C) FROM #T)/2
SET @I=1
WHILE @I <=@DL
BEGIN
INSERT INTO #T2 SELECT SUBSTRING(C,@I,7) FROM #T
SET @I=@I+8
END
SELECT * FROM #T2
create function dbo.fn_split
(
@inputstr varchar(8000),
@seprator varchar(10)
)
returns @temp table (a varchar(200))
as
begin
declare @i int
set @inputstr=rtrim(ltrim(@inputstr))
set @i=charindex(@seprator, @inputstr)
while @i >=1
begin
insert @temp values(left(@inputstr, @i - 1))
set @inputstr=substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i=charindex(@seprator, @inputstr)
end
if @inputstr <> ''
insert @temp values(@inputstr)
return
end
go
--调用
declare @s varchar(1000)
set @s='1,2,3,4,5,6,7,8,55'
select * from dbo.fn_split(@s,',')
drop function dbo.fn_split
SQL Server TEXT、NTEXT字段拆分的问题
以上所分享的是关于SQL Server TEXT、NTEXT字段拆分的问题,下面是编辑为你推荐的有价值的用户互动:
相关问题:sqlserver,在两条完全相同纪录,同时列当中包含有te...
答:这个里面唯一的工作就是去重复,去重复的办法很多,关键的就是看效率问题咯,distinct, in, not in ,exists ,not exists.这些关键字,看楼主用的in,改用exists可能会提高一点效率,个人喜欢用exists,特别是大数据。小数据么,无所谓了。。呵呵... >>详细
相关问题:sqlserver对于ntext字段超过8000的内容替换
答:一般使用这种类型的数据,基本都不替换的,而是采用版本存储的方式,8000字节大约一个数据页。 SQL2005 把 f 替换成K >>详细
相关问题:sql怎么批量替换字段里的字符串的?
答:方法一:varchar和nvarchar类型是支持replace,所以如果你的text不超过8000可以先转换成前面两种类型再使用replace 替换 text ntext 数据类型字段的语句 。 update 表名 set 字段名=replace(cast(与前面一样的字段名 as varchar(8000)) ,'原本内... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
