sql server 从地址字符串中提取省,市字符方法

遇到一个坑的项目,就是以前的客户地址需要把省和市提取出来单独存储,所以就想了一个笨办法,记录一下,避免下次忘记:
 

select CHARINDEX('省',T_Address) from CustomerInfo

// 获取省省份,地址:xxx省xxx
select SUBSTRING(T_Address,1,CHARINDEX('省',T_Address)) from CustomerInfo where CHARINDEX('省',T_Address)>0

// 获取自治区,地址:xxx自治区xxx
select SUBSTRING(T_Address,1,CHARINDEX('自治区',T_Address)+2) from CustomerInfo where CHARINDEX('自治区',T_Address)>0

// 获取市,地址:xxx市xxx
select SUBSTRING(T_Address,1,CHARINDEX('市',T_Address)) from CustomerInfo where  CHARINDEX('市',T_Address)>0 and  CHARINDEX('省',T_Address)<=0 and CHARINDEX('自治区',T_Address)<=0


// 获取市,地址:xxx省xxx市xxx
select SUBSTRING(T_Address,CHARINDEX('省',T_Address)+1,CHARINDEX('市',T_Address)-CHARINDEX('省',T_Address)) from CustomerInfo where CHARINDEX('省',T_Address)>0 and  CHARINDEX('市',T_Address)>0


// 获取市,地址:xxx自治区xx市xxx
select SUBSTRING(T_Address,CHARINDEX('自治区',T_Address)+3,CHARINDEX('市',T_Address)-CHARINDEX('自治区',T_Address)-2) from CustomerInfo where CHARINDEX('自治区',T_Address)>0 and  CHARINDEX('市',T_Address)>0

更新的时候直接用:

// 提取省份并更新
update CustomerInfo  set T_Province=SUBSTRING(T_Address,1,CHARINDEX('省',T_Address))  where CHARINDEX('省',T_Address)>0

// 提取以xx市开头的市并更新
update CustomerInfo  set T_City=SUBSTRING(T_Address,1,CHARINDEX('市',T_Address)) from CustomerInfo where  CHARINDEX('市',T_Address)>0 and  CHARINDEX('省',T_Address)<=0 and CHARINDEX('自治区',T_Address)<=0

// 提取省下的市 并更新(xxx省xx市)
update CustomerInfo  set T_City=SUBSTRING(T_Address,CHARINDEX('省',T_Address)+1,CHARINDEX('市',T_Address)-CHARINDEX('省',T_Address)) from CustomerInfo where CHARINDEX('省',T_Address)>0 and  CHARINDEX('市',T_Address)>0

 

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值