日期:2014-05-17  浏览次数:20360 次

sql 语句查询字段,根据分隔符截取该字符串输出
有一个数据库database中数据表msg有三个字段,id,date,data

现在想把msg信息查询输出,
实现date字段按空格分成两个字段,如2014-1-16为日期字段,16:51:25为时间字段,
data字段按空格分为五个字段
最终效果如下:

我百度学习到可以用Split函数
select date.Split(' ')[0] as 日期,data.Split(' ')[1] as 时间 from msg
貌似不对
请高手指教

------解决方案--------------------

declare @t table(id int, date datetime,data varchar(2000))
insert into @t(id,date,data)
select 23,'2014-01-16 16:51:29.000','<PNBO>http.tcp 1389977721-1389977749 172.19.71.97:26111-61.158.246.131:80 861 2813'
 
select id,日期=convert(varchar(10),date,111),时间=convert(varchar(10),date,108),
信息1=substring(data,1,charindex(' ',data)),
信息2=PARSENAME(
    replace(replace(replace(data,substring(data,1,charindex(' ',data)),''),'.','?'),' ','.')
    ,4),
信息3=replace(PARSENAME(
    replace(replace(replace(data,substring(data,1,charindex(' ',data)),''),'.','?'),' ','.')
    ,3),'?','.'),
信息4=replace(PARSENAME(
    replace(replace(replace(data,substring(data,1,charindex(' ',data)),''),'.','?'),' ','.')
    ,2),'?','.'),
信息4=replace(PARSENAME(
    replace(replace(replace(data,substring(data,1,charindex(' ',data)),''),'.','?'),' ','.')
    ,1),'?','.')
from @t