专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 其他数据库

Sqlite3搜索结果排序碰到的有关问题

发布时间:2010-05-24 21:31:22 文章来源:www.iduyao.cn 采编人员:星星草
Sqlite3搜索结果排序碰到的问题
各位大虾,小弟碰到一个搜索结果排序的问题。
具体如下: 使用Sqlite3,一张表里面有Pt_Name一项,类型是char,里面的数据有:pt1 pt10 pt11 pt2 pt20。
然后搜索Pt_Name。结果却发现,无论怎么更改搜索限制条件,结果都无法按照以下方式:
pt1 pt2 pt10 pt11 pt20
如果想要现实以上功能,该如何去做?
先谢谢各位咯!

------解决方案--------------------
SQL code
sqlite> select * from t_gulangduxing;
Pt_Name
pt1
pt10
pt11
pt2
pt20
sqlite>
sqlite> select * from t_gulangduxing
   ...> order by substr(Pt_Name,3)+0;
Pt_Name
pt1
pt2
pt10
pt11
pt20
sqlite>

------解决方案--------------------
似乎只能通过UDF扩展来改变比较算法
------解决方案--------------------
数据库的操作是基于表,基于表的操作是基于字段。

按楼主的说法,要对一个字段里面的内容进行排序,这样的话,仅仅通过SQL命令应该是没办法实现的。不管是左连接,右连接,子查询等等都不行。正常的做法是把数据取下来在客户端用程序解决。思路是取出字段容,以DELPHI为例,按' '进行分解,分解后一个字段的内容可以分成很多个字串,如PT1,PT2,PT3...存放在TStringList中,然后对TStringList做排序,冒泡什么都行,最后把TStringList合成一个字段,然后显示就OK了。

我自己写了一个SQLite查询器,这里下载:http://robot88.ro.funpic.org/
------解决方案--------------------
还有一种方法:
SELECT QQ,GROUP_CONCAT(NEWZ ,'') FROM (
SELECT *,SUBSTR(QQ,ID,1) AS NEWZ FROM AA A LEFT JOIN LSB B ON LENGTH(A.qq)>=B.ID)
WHERE UPPER(NEWZ) NOT IN('P','T')
GROUP BY QQ
ORDER BY 0+GROUP_CONCAT(NEWZ ,'')
LSB:字段ID,1-10000
注意:3.6。23支持GROUP_CONCAT
------解决方案--------------------
SQLITE 3.5.4就支持GROUP_CONCAT了,你的版本?
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: