数据库里有几十万的定单,大部分订单将通过邮局发送,但是大约有100个左右的城市的订单需要通过快递公司发送,这些城市的名字已经保存在了数据库里.
假设订单表为Orders,其中的地址字段为Address.存储城市名的表为Citys,城市名为CityName,如何利用Sql语句,高效的把订单地址里边包含这些城市的单子和不包含这些城市的单子给区分出来呢。
假设订单表为Orders,其中的地址字段为Address.存储城市名的表为Citys,城市名为CityName,如何利用Sql语句,高效的把订单地址里边包含这些城市的单子和不包含这些城市的单子给区分出来呢。
select * from orders , citys where charindex(cityname , address) > 0
inner join Citys on charindex(CityName,Orders.Address)>0
drop table Orders
go
create table Orders(Address varchar(20))
insert into Orders(Address) values('北京市.......')
insert into Orders(Address) values('深圳市.......')
insert into Orders(Address) values('广州市.......')
insert into Orders(Address) values('天津市.......')
insert into Orders(Address) values('重庆市.......')
insert into Orders(Address) values('上海市.......')
insert into Orders(Address) values('北京市.......')
goif object_id('pubs..Citys') is not null
drop table Citys
go
create table Citys(CityName varchar(20))
insert into Citys(CityName) values('北京')
insert into Citys(CityName) values('深圳')
goselect * from orders , citys where charindex(cityname , address) > 0drop table Orders,Citys/*
Address CityName
-------------------- --------------------
北京市....... 北京
北京市....... 北京
深圳市....... 深圳(所影响的行数为 3 行)
*/
inner join Citys on patindex('%'+CityName+'%',Orders.Address)>0建议建全文索引,提高速度
drop table Orders
go
create table Orders(Address varchar(20))
insert into Orders(Address) values('北京市.......')
insert into Orders(Address) values('深圳市.......')
insert into Orders(Address) values('广州市.......')
insert into Orders(Address) values('天津市.......')
insert into Orders(Address) values('重庆市.......')
insert into Orders(Address) values('上海市.......')
insert into Orders(Address) values('北京市.......')
goif object_id('pubs..Citys') is not null
drop table Citys
go
create table Citys(CityName varchar(20))
insert into Citys(CityName) values('北京')
insert into Citys(CityName) values('深圳')
goselect * from orders where Address not in
(select orders.address from orders , citys where charindex(cityname , address) > 0)drop table Orders,Citys/*
Address
--------------------
广州市.......
天津市.......
重庆市.......
上海市.......(所影响的行数为 4 行)
*/