日期:2014-05-19  浏览次数:20855 次

多关键字匹配的sql语句如何写
数据库里有几十万的定单,大部分订单将通过邮局发送,但是大约有100个左右的城市的订单需要通过快递公司发送,这些城市的名字已经保存在了数据库里.
假设订单表为Orders,其中的地址字段为Address.存储城市名的表为Citys,城市名为CityName,如何利用Sql语句,高效的把订单地址里边包含这些城市的单子和不包含这些城市的单子给区分出来呢。

------解决方案--------------------
假设订单表为Orders,其中的地址字段为Address.存储城市名的表为Citys,城市名为CityName,如何利用Sql语句,高效的把订单地址里边包含这些城市的单子和不包含这些城市的单子给区分出来呢。

包含
select * from orders , citys where charindex(cityname , address) > 0
------解决方案--------------------
select Orders.* from Orders
inner join Citys on charindex(CityName,Orders.Address)> 0
------解决方案--------------------
select Orders.* from Orders
inner join Citys on patindex( '% '+CityName+ '% ',Orders.Address)> 0

建议建全文索引,提高速度