求存储过程,拆字符串

youngsheep 2014-03-13 03:53:37
根据一个表计算后更新另一个表
有用web script写出来,但是效率太慢,没写过存储过程,求高手指导

bas_area表,id,sheng_id ,city_id 数字
id sheng_id sheng_name city_id city_name
1 1 北京 101 市区
2 2 上海 201 市区
3 3 天津 301 市区
4 4 重庆 401 市区
5 5 河北 501 石家庄
6 5 河北 502 唐山
7 5 河北 503 秦皇岛
8 5 河北 504 邯郸
9 5 河北 505 邢台
10 5 河北 506 保定
11 5 河北 507 张家口
12 5 河北 508 承德

ipn表
id account country sheng_name city_name
8567 975705682 上海市青浦区
8568 975705683 上海市青浦区
8569 975706026 上海市青浦区
8631 975839024 贵州省遵义市
8632 975839030 贵州省遵义市
8633 975839031 贵州省遵义市
8634 975839042 贵州省遵义市
8635 975839043 贵州省遵义市
8636 975839044 贵州省遵义市湄潭县
8637 975839045 贵州省遵义市
8638 975839049 贵州省遵义市湄潭县
8639 975839050 贵州省遵义市

需要把country与bas_area对应起来,拆分到sheng_name 和city_name中

感谢了,本不应该在这里求结果自己分析的,奈何能力有限,看哪位大侠帮下忙,特别特别感谢
...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngsheep 2014-03-13
  • 打赏
  • 举报
回复
引用 7 楼 DBA_Huangzj 的回复:
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-03-13 16:27:29
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
--	Apr  2 2010 15:48:46 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[IPN]
if object_id('[IPN]') is not null drop table [IPN]
go 
create table [IPN]([id] int,[account] int,[country] nvarchar(18))
insert [IPN]
select 8567,975705682,N'上海市青浦区'  union all
select 8568,975705683,N'上海市青浦区'  union all
select 8569,975706026,N'上海市青浦区'  union all
select 8631,975839024,N'贵州省遵义市'  union all
select 8632,975839030,N'贵州省遵义市'  union all
select 8633,975839031,N'贵州省遵义市'  union all
select 8634,975839042,N'贵州省遵义市'  union all
select 8635,975839043,N'贵州省遵义市'  union all
select 8636,975839044,N'贵州省遵义市湄潭县'  union all
select 8637,975839045,N'贵州省遵义市'  union all
select 8638,975839049,N'贵州省遵义市湄潭县'  union all
select 8639,975839050,N'贵州省遵义市' 
--------------生成数据--------------------------

select * ,SUBSTRING([country],1,PATINDEX(N'%[省市]%',[country]))[SHENG_Name],SUBSTRING(SUBSTRING([country],PATINDEX(N'%[省市]%',[country])+1,LEN([country])),1,pATINDEX(N'%[市区]%',SUBSTRING([country],PATINDEX(N'%[省市]%',[country])+1,LEN([country]))))city_name
from [IPN]
----------------结果----------------------------
/* 
id          account     country            SHENG_Name         city_name
----------- ----------- ------------------ ------------------ ------------------
8567        975705682   上海市青浦区             上海市                青浦区
8568        975705683   上海市青浦区             上海市                青浦区
8569        975706026   上海市青浦区             上海市                青浦区
8631        975839024   贵州省遵义市             贵州省                遵义市
8632        975839030   贵州省遵义市             贵州省                遵义市
8633        975839031   贵州省遵义市             贵州省                遵义市
8634        975839042   贵州省遵义市             贵州省                遵义市
8635        975839043   贵州省遵义市             贵州省                遵义市
8636        975839044   贵州省遵义市湄潭县          贵州省                遵义市
8637        975839045   贵州省遵义市             贵州省                遵义市
8638        975839049   贵州省遵义市湄潭县          贵州省                遵义市
8639        975839050   贵州省遵义市             贵州省                遵义市

*/
没办法,跪了 技术改变世界 本人服服贴贴
發糞塗牆 2014-03-13
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-03-13 16:27:29
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
--	Apr  2 2010 15:48:46 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[IPN]
if object_id('[IPN]') is not null drop table [IPN]
go 
create table [IPN]([id] int,[account] int,[country] nvarchar(18))
insert [IPN]
select 8567,975705682,N'上海市青浦区'  union all
select 8568,975705683,N'上海市青浦区'  union all
select 8569,975706026,N'上海市青浦区'  union all
select 8631,975839024,N'贵州省遵义市'  union all
select 8632,975839030,N'贵州省遵义市'  union all
select 8633,975839031,N'贵州省遵义市'  union all
select 8634,975839042,N'贵州省遵义市'  union all
select 8635,975839043,N'贵州省遵义市'  union all
select 8636,975839044,N'贵州省遵义市湄潭县'  union all
select 8637,975839045,N'贵州省遵义市'  union all
select 8638,975839049,N'贵州省遵义市湄潭县'  union all
select 8639,975839050,N'贵州省遵义市' 
--------------生成数据--------------------------

select * ,SUBSTRING([country],1,PATINDEX(N'%[省市]%',[country]))[SHENG_Name],SUBSTRING(SUBSTRING([country],PATINDEX(N'%[省市]%',[country])+1,LEN([country])),1,pATINDEX(N'%[市区]%',SUBSTRING([country],PATINDEX(N'%[省市]%',[country])+1,LEN([country]))))city_name
from [IPN]
----------------结果----------------------------
/* 
id          account     country            SHENG_Name         city_name
----------- ----------- ------------------ ------------------ ------------------
8567        975705682   上海市青浦区             上海市                青浦区
8568        975705683   上海市青浦区             上海市                青浦区
8569        975706026   上海市青浦区             上海市                青浦区
8631        975839024   贵州省遵义市             贵州省                遵义市
8632        975839030   贵州省遵义市             贵州省                遵义市
8633        975839031   贵州省遵义市             贵州省                遵义市
8634        975839042   贵州省遵义市             贵州省                遵义市
8635        975839043   贵州省遵义市             贵州省                遵义市
8636        975839044   贵州省遵义市湄潭县          贵州省                遵义市
8637        975839045   贵州省遵义市             贵州省                遵义市
8638        975839049   贵州省遵义市湄潭县          贵州省                遵义市
8639        975839050   贵州省遵义市             贵州省                遵义市

*/
jorkin_me 2014-03-13
  • 打赏
  • 举报
回复
干嘛不直接去统计局找国标?
youngsheep 2014-03-13
  • 打赏
  • 举报
回复
引用 3 楼 fredrickhu 的回复:
你这个匹配比较难搞哦。因为还可能有县。。 而且需要拆分。
有的没有县,有市就足够了,你有好办法没 或者写一个简单一些有循环的过程给我,我自己根据数据库来研究? 感谢了
youngsheep 2014-03-13
  • 打赏
  • 举报
回复
引用 2 楼 DBA_Huangzj 的回复:
期待结果是如何的?我怎么觉得直接单表拆分就够了?
反正就是要规范成 省,市这样 可能思路也有问题 那个bas_area可以无视
--小F-- 2014-03-13
  • 打赏
  • 举报
回复
你这个匹配比较难搞哦。因为还可能有县。。 而且需要拆分。
發糞塗牆 2014-03-13
  • 打赏
  • 举报
回复
期待结果是如何的?我怎么觉得直接单表拆分就够了?
youngsheep 2014-03-13
  • 打赏
  • 举报
回复
两个表结构如下,文本排版乱了

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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