导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

如何用SQL截取字符串

bitlaoyuan 2008-01-20 03:05:14
t1表,c1字段的数据是多行的:

"中国林业出版社, 2000
840页 ;
7-5038-2336-4"

现在要把840这个页数提出来赋给c2。
估计写SQL用正则不太好弄,我只知道正则表达式可以在like里用。
那就是截取换行符和"页"之间的字符串了,望高手指教!
...全文
3404 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluegift 2008-01-21

正则表达式可以的

declare @t table(AllName varchar(100))
insert @t select '中国林业出版社, 2000
840页 ;
7-5038-2336-4'
insert @t select '中国林
业出版社, 2000
840页 ;
7-5038-2336-4'


select AllName,rtrim(substring(AllName,PATINDEX('%['+ char(10)+char(13) +'][0-9]%页%',AllName)+1,charindex('页',AllName)-PATINDEX('%['+ char(10)+char(13) +'][0-9]%页%',AllName)-1)) as col2
from @t
回复
sp4 2008-01-21
haha,写得有意思。还真行
回复
bitlaoyuan 2008-01-20
真想拿正则直接把它匹配出来。。好像还是写个PHP省事。。
回复
bitlaoyuan 2008-01-20
现在新问题的关键是,数据并不规则,如何从"页"前面那个换行开始截呢?而不是从第几个换行开始截。。。
回复
bitlaoyuan 2008-01-20
到底什么时候用CHAR(10),什么时候用CHAR(13),什么时候用CHAR(10)+CHAR(13)啊。。。
我是生试出来的。。另外我的数据是从Excel里导出来的。。
回复
bitlaoyuan 2008-01-20
呵呵,经测试,应该用 CHAR(10)+CHAR(13)
回复
正牌风哥 2008-01-20
declare @t table(col varchar(50))
insert @t select '中国林业出版社, 2000
840页 ;
7-5038-2336-4'

select
col,
rtrim(substring(col,charindex(char(10),col),charindex(';',col)-charindex(char(10),col))) as col2
from
@T
回复
dawugui 2008-01-20
楼上方法可行.顶.
回复
hui_hui_2007 2008-01-20
substring()函数
回复
-狙击手- 2008-01-20
declare @t table(col varchar(50))
insert @t select '中国林业出版社, 2000
840页 ;
7-5038-2336-4'


select * from @t

select col ,substring(col,charindex('
',col)+2,charindex('页',col) - charindex('
',col) - 2) as col2 from @t
/*

col col2
-------------------------------------------------- --------------------------------------------------
中国林业出版社, 2000
840页 ;
7-5038-2336-4 840

(所影响的行数为 1 行)
*/
回复
-狙击手- 2008-01-20
declare @t table(col varchar(50))
insert @t select '中国林业出版社, 2000
840页 ;
7-5038-2336-4'


select * from @t

select col ,substring(col,charindex('
',col)+2,charindex(';',col) - charindex('
',col)) as col2 from @t
/*

col col2
-------------------------------------------------- --------------------------------------------------
中国林业出版社, 2000
840页 ;
7-5038-2336-4 840页 ;

(所影响的行数为 1 行)
*/
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告