create function f_search(@temp varchar(1000))
returns int
as
begin
declare @flag int
if charindex('c',@temp)>0
begin
set @flag=1
end
else
begin
set @flag=0
end
return @flag
endselect dbo.f_search('abc')
returns int
as
begin
declare @flag int
if charindex('c',@temp)>0
begin
set @flag=1
end
else
begin
set @flag=0
end
return @flag
endselect dbo.f_search('abc')
解决方案 »
- sql中要选出最小价格商品的ID要怎么做?假设表非常简单,就id和price。
- 我用什么控件,这个程序怎么写(asp.net)
- sql server索引问题
- SQL SERVER 2005开发版要修改表值函数时出现的错误
- 安装sql失败,提示:"以前的某个程序安装已在安装计算计上创建挂起的文件操作
- 寻找高手,关于多表汇总关联(急)
- 查询语句
- 拷贝了data目录下文件,重装系统后怎么恢复数据?
- sql查询问题,请高手帮忙阿!!!非常麻烦!
- 请问如何在VFP中调用API函数 例如GetVolumnInformation()我想知道A:的序列号
- 求解表的问题??在线等谢谢各位高手了!!!
- 如何匯總字符串?
则也要返回1,只要s以"&"分割成的字符有一个在temp中,则返回1,否则返回0。
-- 判断字符s是否在temp中,在则返回1,不在则返回0
--Test
declare @temp varchar(50)
declare @s varchar(10)
declare @flag bit
set @temp = 'a&b&c&d&'
set @s = 'x'if charindex(@s,@temp) <> 0
begin
set @flag = 1
end
else
begin
set @flag = 0
end go
--Function
create function Checkstr(@temp varchar(50),@s varchar(10))
returns bit
as
begin
declare @flag bit
set @temp = 'a&b&c&d&'
set @s = 'x'
if charindex(@s,@temp) <> 0
begin
set @flag = 1
end
else
begin
set @flag = 0
end
end
则也要返回1,只要s以"&"分割成的字符有一个在temp中,则返回1,否则返回0。
CREATE FUNCTION dbo.splitstring(@str varchar(8000),@c varchar(10))
RETURNS @t table(s varchar(100))
AS
BEGIN
DECLARE @s varchar(8000)
SET @s=@str
WHILE CHARINDEX(@c,@s)>0
BEGIN
INSERT INTO @t(s) VALUES(LEFT(@s,CHARINDEX(@c,@s)-1))
SET @s=RIGHT(@s,LEN(@s)-CHARINDEX(@c,@s))
END
INSERT INTO @t(s) VALUES(@s)
RETURN
END
GO--调用:
if exists(select 1 from dbo.splitstring('a&bc&d','&') a,dbo.splitstring('b&c','&') b where a.s like '%'+b.s+'%')
print '存在'
else
print '不存在'
drop function [dbo].[f_comp]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[序数表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [序数表]
GO--创建处理的序数表,主要是解决效率问题,不然可以直接在函数中生成序数表
select top 8000 id=identity(int,1,1) into 序数表
from sysobjects a,syscolumns b
go--创建比较的处理函数
create function f_comp(
@str1 varchar(8000),
@str2 varchar(8000)
)returns bit
as
begin
declare @re bit
if exists(select 1 from(
select aa='%&'+substring(@str1,id,charindex('&',@str1+'&',id)-id)+'&%'
from 序数表 where substring('&'+@str1,id,1)='&'
)a where '&'+@str2+'&' like aa)
set @re=1
else
set @re=0
return(@re)
end
go--调用
select dbo.f_comp('a&b&c&d','c&e')
select dbo.f_comp('a&b&c&d','f&e')
go