日期:2014-05-18  浏览次数:20495 次

"反通配",恭候大侠出手
前提:数据库里面,作为数据 "% "被储存在某列,该列为   char   8   ,不知道有几个 "% ",也不知道在什么位置。
要求:以该列作为检索条件,遇到 "% "时,均认为符合条件
我是蔡鸟一只,请问这样的sql该怎么写啊,谢谢

------解决方案--------------------
要這2個?
charindex()
patindex()
------解决方案--------------------
這樣?

Create Table A
(Name Char(10))
Insert A Select 'sdf%dsff '
Union All Select 'w1%fd%rg '
Union All Select 'das '
GO
Select * From A Where Name Like '%[%]% '
GO
Drop Table A
--Result
/*
Name
sdf%dsff
w1%fd%rg
*/
------解决方案--------------------
還是這樣?

create table A(c1 char(08))
insert into A
select 'abc%ef%h ' union all
select 'a%cdefg% '

--匹配字串 'abcdefgh '
select * from a
where patindex(c1, 'abcdefgh ')> 0
/*
c1
--------
abc%ef%h
a%cdefg%
*/

drop table a
------解决方案--------------------
Create Table A
(Name Char(10))
Insert A Select 'sdf%dsff '
Union All Select 'w1%fd%rg '
Union All Select 'das '
GO
--Like的寫法
Select * From A Where Name Like '%[%]% '
--CharIndex的寫法
Select * From A Where CharIndex( '% ', Name) > 0
--PatIndex的寫法
Select * From A Where PatIndex( '%[%]% ', Name) > 0
GO
Drop Table A
--Result
/*
Name
sdf%dsff
w1%fd%rg
*/