如何用SQL截取字符串 t1表,c1字段的数据是多行的:"中国林业出版社, 2000840页 ;7-5038-2336-4"现在要把840这个页数提出来赋给c2。估计写SQL用正则不太好弄,我只知道正则表达式可以在like里用。那就是截取换行符和"页"之间的字符串了,望高手指教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declare @t table(col varchar(50))insert @t select '中国林业出版社, 2000 840页 ; 7-5038-2336-4'select * from @tselect col ,substring(col,charindex('',col)+2,charindex(';',col) - charindex('',col)) as col2 from @t/*col col2 -------------------------------------------------- -------------------------------------------------- 中国林业出版社, 2000 840页 ; 7-5038-2336-4 840页 ; (所影响的行数为 1 行)*/ declare @t table(col varchar(50))insert @t select '中国林业出版社, 2000 840页 ; 7-5038-2336-4'select * from @tselect 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 行)*/ 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 col2from @T 呵呵,经测试,应该用 CHAR(10)+CHAR(13) 到底什么时候用CHAR(10),什么时候用CHAR(13),什么时候用CHAR(10)+CHAR(13)啊我是生试出来的。。另外我的数据是从Excel里导出来的。。 真想拿正则直接把它匹配出来。。好像还是写个PHP省事。。 正则表达式可以的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 字符和数据在一起的排序 日期段表忽略年份怎么比较? 急:数据库错误:进程 90 发生了严重的异常 c0000005 EXCEPTION_ACCESS_VIOLATION 多字段统计并加上合计的取值问题!!!!!!(在线等) (紧急求救) 排序问题? sqlserver中我想把select出来的数据排序,为Null的方最下边,怎样实现? SQL数据库表记录比较 Sql Server 去重复数据 SET DATEFORMAT对日期处理有什么影响 困扰3天的bug请高手来看下 关于序号排序的问题? 联合查询的问题
insert @t select '中国林业出版社, 2000
840页 ;
7-5038-2336-4'
select * from @tselect col ,substring(col,charindex('
',col)+2,charindex(';',col) - charindex('
',col)) as col2 from @t
/*col col2
-------------------------------------------------- --------------------------------------------------
中国林业出版社, 2000
840页 ;
7-5038-2336-4 840页 ; (所影响的行数为 1 行)
*/
insert @t select '中国林业出版社, 2000
840页 ;
7-5038-2336-4'
select * from @tselect 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 行)
*/
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
我是生试出来的。。另外我的数据是从Excel里导出来的。。
正则表达式可以的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