如何用SQL截取字符串

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

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

现在要把840这个页数提出来赋给c2。
估计写SQL用正则不太好弄,我只知道正则表达式可以在like里用。
那就是截取换行符和"页"之间的字符串了,望高手指教!
...全文
3430 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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 行)
*/

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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