sql 에서 검색 의 모호 한 일치 문자열 생 성

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_Sql]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_Sql] GO if exists (select * from dbo.sysobjects where id = object_id(N'[서수 표]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [서수 표]GO-효율 을 위해 보조 표 에 select 를 맞 춰 야 합 니 다. top 1000 id=identity(int,1,1) into 서수 표  from syscolumns a,syscolumns b alter table 서수 표 add constraint pk_id_서수 표 primary key(id)go/*-지정 한 문자열 에 따라 검색 의 모호 한 일치 문자열 을 생 성 합 니 다. 조건 부 연결 의 키 워드 는? and,or  괄호 를 임의로 지정 할 수 있다 생 성 된 조건 식 은 like 모호 일치--추 건 2004.08(인용 은 이 정 보 를 보존 하 십시오)--*/*--호출 예시 --호출 예시 select A=dbo.f_Sql('(Web or HTML or Internet) and (Programmer or Developer)','content')  select B=dbo.f_Sql('Web or HTML or Internet','content')  select C=dbo.f_Sql('(Web and HTML)','content')  select D=dbo.f_Sql('Web','content')--*/--예제 함수 create function f_Sql( @str Nvarchar(1000), --검색 할 문자열@fdname sysname --그 필드 에서 검색)returns Nvarchar(4000) as begin  declare @r Nvarchar(4000)  set @r=''  select @r=@r+case   when substring(@str,id,charindex(' ',@str+' ',id)-id) in('or','and')    then ' '+substring(@str,id,charindex(' ',@str+' ',id)-id)+' '   when substring(@str,id,1)='('    then '(['+@fdname+'] like ''%'     +substring(@str,id+1,charindex(' ',@str+' ',id)-id-1)     +'%'''   when substring(@str,charindex(' ',@str+' ',id)-1,1)=')'    then '['+@fdname+'] like ''%'     +substring(@str,id,charindex(' ',@str+' ',id)-id-1)     +'%'')'   else '['+@fdname+'] like ''%'    +substring(@str,id,charindex(' ',@str+' ',id)-id)    +'%'''   end  from 서수 표 where id<=len(@str)   and charindex(' ',' '+@str,id)-id=0  return(@r) end go

좋은 웹페이지 즐겨찾기