模糊查询特殊符号匹配的问题

看下面例子,我想找到一个字符串'titleview',用patindex函数找到它,不希望这个字符串是其他字符串的一部分,例如'titleview_1' or 'titleview1' or 'titleviewcc'等等,在正常情况下是比较好找的,但是这个字符串后面跟些特殊符号,例如换行char(10),回车符char(13)等,就不太好找了,下面的例3能找到一般情况下的,例4能找到特殊的,例5不符合我的要求,我想将这2条语句结合在一起,以避免用or列出其他的特殊字符的情况,请问大家有没有比较好的办法能实现?
谢谢大家。
use pubs
go
declare @s varchar(8000)
set @s=(select text as sql_text from syscomments where id=object_id('titleview'))
print @s
--1
print substring(@s,122,10)
--2
print ascii(substring(@s,122,1))
--3
select patindex('%'+ '['' '',''.'','','',]'+'titleauthor'+ '['' '','','','';'']%',@s )
--4
select patindex('%'+ '['' '',''.'','','',]'+'titleauthor'+ char(13)+'%',@s )
--5
select patindex('%'+ '['' '',''.'','','',]'+'titleauthor'+ '%',@s )
---------------------------------------------------------------
解答:
我帮你简化了一下,你看看是不是这样,以下四个查询均返回 2

select patindex('%[ '',.]ab[ '',;'+char(13)+']%','S ab c ')
select patindex('%[ '',.]ab[ '',;'+char(13)+']%','S.ab;c')
select patindex('%[ '',.]ab[ '',;'+char(13)+']%','S''ab''c')
select patindex('%[ '',.]ab[ '',;'+char(13)+']%','S,ab
c;')
---------------------------------------------------------------

上例演示:在字符串中查找 ab ,
ab不得为其他字符串的一部分,
如想处理其他特殊字符,如char(10),可修改:

select patindex('%[ '',.]ab[ '',;'+char(13)+char(10)+']%','S,ab
c;')

---------------------------------------------------------------
--try
select * from 表 where patindex('%titleauthor%',replace(字段,char(13)+char(10),''))
>0

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus