首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一高效率sql查找

2013-08-01 
求一高效sql查找?表中一字符字段,数据量很大,需要从里面找出以下资料,字符中包含GD或DGH,在GD或DGH后第9位

求一高效sql查找?
表中一字符字段,数据量很大,
需要从里面找出以下资料,
字符中包含GD或DGH,
在GD或DGH后第9位必须为S或D
可以一个like解决吗?

AGD5-6888-6S-66 可以查出
BDGH5-6888-6D-66 可以查出
AGD5-688d8-6S-66 不可以查出
BDGH5-6888-6AD-66 不可以查出

[解决办法]

If not object_id('[tb]') is null
Drop table [tb]
Go
Create table [tb]([str] nvarchar(17))
Insert [tb]
Select N'AGD5-6888-6S-66' union all
Select N'BDGH5-6888-6D-66' union all
Select N'AGD5-688d8-6S-66' union all
Select N'BDGH5-6888-6AD-66'
Go
--
Select * from [tb] where PATINDEX('%GD_________[SD]%',str)>0 or PATINDEX('%DGH_________[SD]%',str)>0
/*
str
-----------------
AGD5-688d8-6S-66
BDGH5-6888-6AD-66

(2 行受影响)
*/
select str from [tb] where str like '%GD________[SD]%' or str like '%DGH________[SD]%'


/*
str
-----------------
AGD5-6888-6S-66
BDGH5-6888-6D-66

(2 行受影响)
*/

热点排行