回 帖 发 新 帖 刷新版面

主题:又问下关于数据库记录排序的问题~~~

现在表x里面有这样的一个字段y,内容形式如下:
用户名1(日期1), 用户名2(日期2), 用户名3(日期3), ......

现在我想搜索出这个字段里面包含用户名1的所有记录,于是搜索条件写了:
select * [x] where y like '%用户名1%'

现在问题来了:
我想在达到上面目的的同时,按照用户名后面括号中的日期的先后来排序,请问查询语句该怎么写?或者说需要在数据库里面多加一个辅助字段?具体怎么做请赐教!

回复列表 (共7个回复)

沙发

select * [x] where y like '%用户名1%' ORDER BY 日期 DESC

板凳

可是“日期”并不是一个字段啊,这样也行?

3 楼


那就在表中再加个日期字段。然后再用楼上所说的就可以了!

4 楼

在检索生成的记录集里面,将用户名和日期分开显示就行了,不用改数据库。

5 楼

[quote]
那就在表中再加个日期字段。然后再用楼上所说的就可以了![/quote]
问题是我这条记录是许多用户共用的,而这里我的时间是对每个人的,这样的话,如果只加一个字段,那这个字段用来显示谁的日期呢?

6 楼

[quote]在检索生成的记录集里面,将用户名和日期分开显示就行了,不用改数据库。[/quote]
如何分开显示呢?

7 楼

【数据库格式】

编号    字段
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。

我来回复

您尚未登录,请登录后再回复。点此登录或注册