匹配一串字符

delectation 2008-04-01 10:02:27
表里有个字段类型是 ntext
内容格式:原文 [反馈] 2007-12-19 14:26:56 反馈内容

说明:这个字段的内容先是:原文 后面有2个空格 然后是 [反馈]加两个空格再加上日期加上两个空格加上反馈内容


效果取:原文,反馈内容,反馈日期

如:
apple好吃吗? [反馈] 2007-12-18 16:14:53 太好吃了


原文 反馈内容 反馈日期
apple好吃吗? 太好吃了 2007-12-18 16:14:53

如果有难度或不能实现这样也行
原文 反馈内容
apple好吃吗? [反馈] 2007-12-18 16:14:53 太好吃了

一定要考虑到原文有这样的串[反馈]加两个空格再加上日期
...全文
61 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yyyyzzzz_2002 2008-04-01
ntext 字段操作很麻烦,建议改用nvarchar(max)
回复
nextflying 2008-04-01
提取 合并
回复
wangxuelid 2008-04-01


Create table a1
(a ntext)

insert into a1 select 'apple好吃吗? [反馈] 2007-12-18 16:14:53 太好吃了 '

select substring(a,1,charindex('[反馈]',a)-1)as '主题','[反馈]'as 反馈 ,
ltrim(rtrim(substring(reverse(convert(varchar(8000),a)),1,charindex(':',reverse(convert(varchar(8000),a)))-3))),
substring(a,charindex('[反馈]',a)+4,charindex('[反馈]',a)+10)
from a1

--
apple好吃吗? [反馈] 了吃好太 2007-12-18 16:14:53
回复
delectation 2008-04-01
text in row是多少?
什么意思,不明白
回复
-狙击手- 2008-04-01
text in row是多少?
如果非文件指针直接转varchar,然后charindex,substring()
回复
wangxuelid 2008-04-01

'匹配'
select * from time where a like '%[0-9][0-9][0-9][0-9][-][0-9][0-9][-][0-9][0-9] [0-9][0-9][:][0-9][0-9][:][0-9][0-9]%'
回复
wangxuelid 2008-04-01

--上面的确的出答案,但是在判断哪个时间‘2007-12-18 16:14:53 ’却是比较棘手,因为无法保证在回复里面没有时间的‘:’,所以首先要模糊查询时间所在的位置才是这个问题的核心,,,
例如
'apple好吃吗? [反馈] 2007-12-18 16:14:53 太好吃了:'
'apple好吃吗? [反馈] 2007-12-18 16:14:53 太好吃了 '
apple好吃吗? [反馈] 2007-12-18 16:14:53 太好吃了:'
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-01 10:02
社区公告
暂无公告