下面是小编给大家带来的更新字符串列表中,指定位置的字符串数据库教程,本文共5篇,以供大家参考,我们一起来看看吧!
篇1:更新字符串列表中,指定位置的字符串数据库教程
字符串
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_updatestr]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[f_updatestr]GO
/*--更新字符串列表中,指定位置的字符串
更新字符串列表中,指定位置的字符串为新的值 如果位置超出范围,则不做更新
--邹建 .07--*/
/*--调用示例
select dbo.f_updatestr('001|002|003|',1,'00a','|')--*/create function f_updatestr(@s varchar(8000),@pos int,@newstr varchar(100),@spliststr varchar(10) --字符串列表的分隔符)returns varchar(8000)asbegin declare @i int,@ilen int
select @i=charindex(@spliststr,@spliststr+@s) ,@ilen=len(@spliststr) while @i>0 and @pos>1 select @i=charindex(@spliststr,@s,@i)+@ilen ,@pos=@pos-1 return(case @i when 0 then @s else stuff(@s,@i,charindex(@spliststr,@s+@spliststr,@i)-@i,@newstr) end)endgo
篇2:SQL 中自己创建函数,分割字符串数据库教程
创建|函数|字符串
----------------------------------------------------------------
/**
* 版权: 石太祥 [ E.Alpha ] 所有 ;
*
* email: ealpha(AT)msn(DOT)com ;
* msn: ealpha(AT)msn(DOT)com ;
* QQ : 9690501
*
* 所有请注明本信息!
*/
----------------------------------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getEPnum]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[getEPnum]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getstrcount]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[getstrcount]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getstrofindex]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[getstrofindex]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
--- 这个函数直接调用了另外的两个函数,可以先阅读下面提到的两个函数
CREATE function getEPnum (@str varchar(8000))
returns varchar(8000)
as
begin
declare @str_return varchar(8000)
declare @i int
declare @temp_i int
declare @onlineornot int
declare @findepnumok int
-- 用来取得一个epnum,
-- 规则:首先从chatid中取,如果有在线得,则取得最前面得在线得返回
-- 如果全部不在线,则返回 ‘00000000’
select @findepnumok = 0
select @temp_i = 0
IF len(@str)<=0
begin
SELECT @str_return = '00000000'
end
else
begin
select @i = dbo.getstrcount(@str,',')
WHILE @temp_i< @i
BEGIN
select @onlineornot = online from wwchat_user where epnum=dbo.getstrofindex(@str,',',@temp_i)
IF (@onlineornot=1)
begin
select @str_return =dbo.getstrofindex(@str,',',@temp_i)
select @findepnumok = 1 --找到epnum后置为1
BREAK
end
ELSE
begin
select @temp_i = @temp_i + 1
select @findepnumok = 0 --找不到epnum后置为1
end
END
if @findepnumok = 0
begin
SELECT @str_return = '00000000'
end
end
return @str_return
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
-- getstrcount 输入一个没有分割的字符串,以及分割符
--返回数组的个数
CREATE function getstrcount (@str varchar(8000),@splitstr varchar(100))
--returns varchar(8000)
returns int
as
begin
declare @int_return int
declare @start int
declare @next int
declare @location int
select @next = 0
select @location = 1
if len(@str)
select @int_return =0
if charindex(@splitstr,@str) = 0
select @int_return =0
while (@location0)
begin
select @start = @location + 1
select @location = charindex(@splitstr,@str,@start)
select @next = @next + 1
select @int_return = @next
end
return @int_return
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
-- getstrofindex 输入一个未分割的字符串,舒服分割符号,舒服要取得的字符位置
-- 返回 制定位置的字符串
CREATE function getstrofindex (@str varchar(8000),@splitstr varchar(4),@index int=0)
returns varchar(8000)
as
begin
declare @str_return varchar(8000)
declare @start int
declare @next int
declare @location int
select @start =1
select @next = 1 --如果习惯从0开始则select @next =0
select @location = charindex(@splitstr,@str,@start)
while (@location 0 and @index > @next )
begin
select @start = @location +1
select @location = charindex(@splitstr,@str,@start)
select @next =@next +1
end
if @location =0 select @location =len(@str)+1 --如果是因为没有逗号退出,则认为逗号在字符串后
select @str_return = substring(@str,@start,@location -@start) --@start肯定是逗号之后的位置或者就是初始值1
if (@index @next ) select @str_return = '' --如果二者不相等,则是因为逗号太少,或者@index小于@next的初始值1,
SQL 中自己创建函数,分割字符串数据库教程
,
return @str_return
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
篇3:搜索某个字符串在那个表的那个字段中数据库教程
字符串
--搜索某个字符串在那个表的那个字段中
declare @str varchar(100)
set @str='White' --要搜索的字符串
declare @s varchar(8000)
declare tb cursor local for
select s='if exists(select 1 from ['+b.name+'] where ['+a.name+'] like ''%'+@str+'%'')
print ''所在的表及字段: ['+b.name+'].['+a.name+']'''
from syscolumns a join sysobjects b on a.id=b.id
where b.xtype='U' and a.status>=0
and a.xusertype in(175,239,231,167)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
/*--测试结果
所在的表及字段: [authors].[au_lname]
--*/
篇4:存储过程替换text,ntext列中的字符串数据库教程
存储过程|字符串
/*
author:amjn
date:-03-28
version:1.0
function:替换text,ntext列中的字符串(不支持中文)
*/
declare @ptr varbinary(16)
declare @amjnId int
declare @Position int,@len int
set @len=datalength('ILOVEHJL')
declare wux_Cursor scroll Cursor
for
select textptr([Name]),[amjnId] from USA201
for read only
open wux_Cursor
fetch next from wux_Cursor into @ptr,@amjnId
while @@fetch_status=0
begin
select @Position=patindex('%ILOVEHJL%',[Name]) from USA201 where [amjnId]=@amjnId
while @Position>0
begin
set @Position=@Position-1
updatetext USA201.[Name] @ptr @Position @len 'i love hjl'
select @Position=patindex('%ILOVEHJL%',[Name]) from USA201 where [amjnId]=@amjnId
end
fetch next from wux_Cursor into @ptr,@amjnId
end
close wux_cursor
deallocate wux_cursor
go
篇5:删除字符串中指定位置的字符
/*********************************************************************** 版权所有 (C)2015, Wu Yingqiang,
删除字符串中指定位置的字符
。** 文件名称:DelPosChar.c* 文件标识:无* 内容摘要:删除字符串中指定位置的字符* 其它说明:无* 当前版本: V1.0* 作 者: Wu Yingqiang* 完成日期: 20150115***********************************************************************/#include文档为doc格式