SQL语句查询:根据地址查出城市 5

SQL语句查询:根据地址查出城市例如以下地址:云南省昆明市云南省昆明市河北省石家庄市河北省石家庄市河北省石家庄市河北省石家庄市河北省石家庄市北京市河南省洛阳市河北省石家庄... SQL语句查询:根据地址查出城市
例如以下地址:
云南省昆明市
云南省昆明市
河北省石家庄市
河北省石家庄市
河北省石家庄市
河北省石家庄市
河北省石家庄市
北京市
河南省洛阳市
河北省石家庄市裕华东路57号
深圳市
河南省洛阳市涧西区富地国际中心B座12层
河南省林州市
河南省栾川县君山东路高杆灯西南侧
安阳市彰德路大西门中州快捷酒店一楼
辉县市中心路215号共城公园内
河南省开封市大梁路26号银地商务广场C座522室
河南省洛阳市
西安市含光北路137号鸿业大酒店2号楼三层
西安市含光南路178号吉祥大厦1302室
西安市临潼区中心广场东风大楼三层
山西省平遥县北关大街16号
山西省平遥县下西门西马道12号
山西省平遥北关大街58号
介休市东大街老爷庙大市场A座3号
山西省临汾市鼓楼南大街19号
山西省太原市千峰南路东民科技大厦10号楼12层

根据这个地址,在城市表中查出该地址所在城市的ID。
城市表格式 ID city
我曾经这样写!
select id,city from dbo.tblcity where city in ('山西省太原市千峰南路东民科技大厦10号楼12层')
但是不行。 请问应该怎么做!
没有空格。而且,你写的也不对。 不可能是=的。 我的意思是,提取地址里面的城市名称和城市列对比。符合的话就查出来
展开
 我来答
badkano
2010-08-24 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885367
团长

向TA提问 私信TA
展开全部
select id,city from dbo.tblcity where trim(city) = '山西省太原市千峰南路东民科技大厦10号楼12层'

你那么写查不出来有可能是因为city这个字段里的数据,前边或后边有空格
---------补充--------
那没法弄,你有的里边不是市,是县,还有的前边带省份名称,你这里根本就没有一个统一的标准,所以,要么用存储过程,单纯的sql很难搞定
墮天之翼
2010-08-24 · TA获得超过287个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:148万
展开全部
首先你知道你这个变量的长度,也就是 山西省太原市千峰南路东民科技大厦10号楼12层 的长度
可以
select @a=len('山西省太原市千峰南路东民科技大厦10号楼12层')
然后循环
while @a>0
begin
select id,city from dbo.tblcity where city=(substring('山西省太原市千峰南路东民科技大厦10号楼12层',1,@a)
@a=@a-1
end
语法我没检查,变量我也没定义,你自己弄吧。原理就是计算出你输入的长度,然后循环想减进行判断。先完全匹配,如果不行,减去一个字符匹配,直到为0。希望给最佳答案啊,不行的话百度hi问我

楼上的人都没有理解你的意思。呵呵
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
树_镜
2010-08-24 · TA获得超过546个赞
知道小有建树答主
回答量:370
采纳率:100%
帮助的人:239万
展开全部
SQL> create table a (id number,city varchar(100));

表已创建。

SQL> insert into a values (1,'山西省太原市千峰南路东民科技大厦10号楼12层');

已创建 1 行。

SQL> select id,city from a where city in ('山西省太原市千峰南路东民科技大厦10号
楼12层');
ID CITY
---------- -----------------------------------------------------------
1 山西省太原市千峰南路东民科技大厦10号楼12层
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zdn26used
2010-08-24 · TA获得超过136个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:105万
展开全部
如果这些数据都在一张表里面,那就简单了

use 数据库
go
select ID from 表 where CITY like ('%山西省太原市千峰南路东民科技大厦10号楼12层%')

为什么要用模糊查询呢,我因为你IN的时候查不出来的话,证明你的字段数据里面肯定有其他的符号,空格等等。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
erqing091092
2010-08-24 · TA获得超过1239个赞
知道小有建树答主
回答量:882
采纳率:0%
帮助的人:343万
展开全部
这些地址是一个基础表的数据,城市表是维表,肯定不是一个表中的数据!!!!

select id,city from dbo.tblcity a where exists
(
select address from dbo.tbladdress d where address like '%'+a.city+'%'
)

也就是说:地址中含有的城市,才可输出!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式