字符分拆

wangj_0520 2010-02-02 10:54:39
date1="2010-1-15 14:07:45" pe="pp" id="9411" name="001"
date1="2010-1-15 14:07:06" pe="pp" id="09411" name="002"
date1="2010-1-15 14:07:09" pe="pp" id="109411" name="003"
请问如何截取为
id name date1
9411 001 2010-1-15 14:07:45
09411 002 2010-1-15 14:07:06
109411 003 2010-1-15 14:07:09
...全文
119 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangj_0520 2010-02-02
  • 打赏
  • 举报
回复
学习了,谢谢
microsofttyc 2010-02-02
  • 打赏
  • 举报
回复
厉害啊
chuifengde 2010-02-02
  • 打赏
  • 举报
回复
Declare @x varchar(2000)
declare @y xml
set @x='date1="2010-1-15 14:07:45" pe="pp" id="9411" name="001" date1="2010-1-15 14:07:06" pe="pp" id="09411" name="002" date1="2010-1-15 14:07:09" pe="pp" id="109411" name="003" '
set @x=replace(@x,'date1','/><x date1')
set @x=right(@x,len(@x)-1)+'/>'
set @y=cast(@x as xml)

select T.col.value('@date1','datetime') date1,
T.col.value('@pe','varchar(20)') pe,
T.col.value('@id','varchar(20)') id,
T.col.value('@name','varchar(20)') name
from @y.nodes('//x') as T(col)

--result
/*date1 pe id name
----------------------- -------------------- -------------------- --------------------
2010-01-15 14:07:45.000 pp 9411 001
2010-01-15 14:07:06.000 pp 09411 002
2010-01-15 14:07:09.000 pp 109411 003

(3 行受影响)*/
zhousq00 2010-02-02
  • 打赏
  • 举报
回复
好象没看懂!
playwarcraft 2010-02-02
  • 打赏
  • 举报
回复

--先导入DB再处理,直接导入一个栏位中即可
create table T(col nvarchar(300))

insert into T values('date1="2010-1-15 14:07:45" pe="pp" id="9411" name="001"')
insert into T values('date1="2010-1-15 14:07:06" pe="pp" id="09411" name="002" ')
insert into T values('date1="2010-1-15 14:07:09" pe="pp" id="109411" name="003" ')
GO

select parsename(col,1) as [name], parsename(col,2) as [id], parsename(col,3) as [pe], parsename(col,4) as [date]
from
(
select replace(replace(replace( replace(replace(col,'date1="',''),'" pe="','.'),'" id="','.'),'" name="','.') ,'"','') as col
from T
) A

/*
name id pe date
-------------------------------------------------
001 9411 pp 2010-1-15 14:07:45
002 09411 pp 2010-1-15 14:07:06
003 109411 pp 2010-1-15 14:07:09

*/
Go

Drop table T

wangj_0520 2010-02-02
  • 打赏
  • 举报
回复
假设已经在数据库(SQL2000里了)
这个id,name 不好截取?
我想应该是从id="开始截取,碰到"结束
从name="开始截取,碰到第一个"结束?
敢问高手如何截取?
playwarcraft 2010-02-02
  • 打赏
  • 举报
回复
先把资料导入db再处理
或者excel也可以直接读取。。。
microsofttyc 2010-02-02
  • 打赏
  • 举报
回复
研究一下
gaoshifengsir 2010-02-02
  • 打赏
  • 举报
回复
不会啊
wangj_0520 2010-02-02
  • 打赏
  • 举报
回复
txt
bancxc 2010-02-02
  • 打赏
  • 举报
回复
如果是xml还好处理

34,591

社区成员

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

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