oracle 对用户登记的地址筛选出需要的区域

qq_41605257 2018-01-08 06:34:28
用户信息表中有3个字段涉及到用户所在区域,
qymc 内容为 各市的名称:福州市、宁德市等等,
txdz :用户登记的通讯地址,正常情况下是与qymc对应的地区的地址;地址登记没有统计格式
area:由身份证匹配出来的地址;

现在要取出用户的所在区域到县级;qymc ,txdz ,area三个地址有可能登记的区域并不一致,
qymc 或txdz 能判断区域就按这两个字段的值取,否则就按area取。
qymc 、txdz 地址不一致,按area取。

请问这种类型的数据要怎么取?

...全文
976 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36611253 2018-03-06
  • 打赏
  • 举报
回复
select case when QYMC=substr(TXDZ,1,3) then substr(TXDZ,4,3) when QYMC!=substr(TXDZ,1,3) then area end as address from table
qq_41605257 2018-01-08
  • 打赏
  • 举报
回复
主要是用户登记的地址字段没有什么规律,

像图中这样的,我是勉强用like取了,
((G.TXDZ IS NULL AND (Q.QYMC IN ('宁德市','其他')OR Q.QYMC IS NULL) AND P.AREA LIKE '%宁德%') OR Q.QYMC LIKE '%宁德%' OR
(G.TXDZ LIKE '%宁德%' OR G.TXDZ LIKE '%福安%' OR G.TXDZ LIKE '%福鼎%' OR G.TXDZ LIKE '%霞浦%' OR( G.TXDZ LIKE '%古田%'AND G.TXDZ NOT LIKE '%古田路%'AND G.TXDZ NOT LIKE '%古田支路%'AND G.TXDZ NOT LIKE '%古田街道%')
OR (G.TXDZ LIKE '%屏南%'AND G.TXDZ NOT LIKE '%屏南路%') OR G.TXDZ LIKE '%寿宁%' OR G.TXDZ LIKE '%周宁%' OR G.TXDZ LIKE '%柘荣%'))

但是这样感觉很麻烦,而且也没办法完全达到要求。
有没有高手有什么好的方法,谢谢了
  • 打赏
  • 举报
回复
按关键字 区 市县 截取 字符串,再考虑去重合并的问题

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧