主题:又问下关于数据库记录排序的问题~~~
初拥创始者
[专家分:540] 发布于 2007-05-16 14:33:00
现在表x里面有这样的一个字段y,内容形式如下:
用户名1(日期1), 用户名2(日期2), 用户名3(日期3), ......
现在我想搜索出这个字段里面包含用户名1的所有记录,于是搜索条件写了:
select * [x] where y like '%用户名1%'
现在问题来了:
我想在达到上面目的的同时,按照用户名后面括号中的日期的先后来排序,请问查询语句该怎么写?或者说需要在数据库里面多加一个辅助字段?具体怎么做请赐教!
最后更新于:2007-05-16 21:29:00
回复列表 (共7个回复)
沙发
nckggood [专家分:1020] 发布于 2007-05-16 15:35:00
select * [x] where y like '%用户名1%' ORDER BY 日期 DESC
板凳
初拥创始者 [专家分:540] 发布于 2007-05-16 21:29:00
可是“日期”并不是一个字段啊,这样也行?
3 楼
tianyu123 [专家分:2570] 发布于 2007-05-17 10:15:00
那就在表中再加个日期字段。然后再用楼上所说的就可以了!
4 楼
liulei001 [专家分:12820] 发布于 2007-05-17 16:51:00
在检索生成的记录集里面,将用户名和日期分开显示就行了,不用改数据库。
5 楼
初拥创始者 [专家分:540] 发布于 2007-05-17 20:32:00
[quote]
那就在表中再加个日期字段。然后再用楼上所说的就可以了![/quote]
问题是我这条记录是许多用户共用的,而这里我的时间是对每个人的,这样的话,如果只加一个字段,那这个字段用来显示谁的日期呢?
6 楼
初拥创始者 [专家分:540] 发布于 2007-05-17 20:36:00
[quote]在检索生成的记录集里面,将用户名和日期分开显示就行了,不用改数据库。[/quote]
如何分开显示呢?
7 楼
liulei001 [专家分:12820] 发布于 2007-05-18 08:39:00
【数据库格式】
编号 字段
1 用户名1(2007-05-15)
2 用户名1(2007-05-16)
3 用户名1(2007-05-17)
4 用户名2(2007-05-16)
【T-SQL语句】
select
编号,
substring([字段],1,charindex('(',abc)-1) as 用户名,
substring([字段],charindex('(',[字段])+1,(charindex(')',[字段])-(charindex('(',[字段]))-1))
as 日期
from [表]
where [字段] like '%××××%'
order by 日期
目的是将[字段]分割成[用户名]和[日期]两个字段,然后再将结果集按照[日期]排序。
放到查询分析器里面看一下就明白了。
应该还有更简单的方法,不过这种方法容易理解。主要是用到了两个函数substring和charindex。
我来回复