读书人

小弟我发个字符截取的帖子

发布时间: 2012-04-13 13:50:24 作者: rapoo

我发个字符截取的帖子,

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 

读书人网 >SQL Server

热点推荐