a b
1 1111广东省23455嘎嘎嘎镇DKSKL
2 KSKSKAKL什么的镇12345678
3 上海市JJ镇
我要抓出镇名 也就是
a b
1 嘎嘎嘎镇
2 什么的镇
3 JJ镇
因为没有县名,想从县名+1下手都不行了,镇名的长度不一样+2也不行。求高手了。
------解决方案--------------------
其实很简单的,这种东西先按需求来
最终要获得的是select a,b,GetTown(b) from tb
那么开始就要写个GetTown函数
首先获取'镇'的位置
然后前面那段哪些是不要的呢?按人的逻辑,结合数据一看,有如下几种:
1。到了‘市’
2。遇到了字母
3。遇到了数字
那还不容易写吗?
- SQL code
create function GetTown(@name nvarchar(max))returns nvarchar(max)begindeclare @i intset @i=2 set @name=substring(@name,1,charindex('镇',@name,1)) while @i<len(@name) if substring(reverse(@name),@i,1) like '[0-9]' or substring(reverse(@name),@i,1) like '[a-z]' or substring(reverse(@name),@i,1) = '市' return (@name) else set @name=stuff(...).........end