吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1130|回复: 11
收起左侧

[求助] 求助:Sqlite数据库中文排序问题

[复制链接]
wlue 发表于 2023-6-1 21:07
本帖最后由 wlue 于 2023-6-1 21:10 编辑

我用 PHP 结合 SQLite 数据库 开发一个小型办公系统(已经完成),但还有一个问题没有解决,那就是 Sqlite不支持 对中文字段的排序,在网上搜了一下,找到两篇文章:
SQLite-如何实现中文按拼音排序:http://www.cftea.com/c/2020/08/12950.asp
Sqlite中文排序:https://www.cnblogs.com/telwanggs/p/6856642.html
但我对 SQLite 了解不深,对这两篇文章看不懂,不知道如何编写排序方法,如何安装排序方法(按照文章中的代码在命令行中比葫芦画瓢老是出错)……
顺便说一下,我对 SQLite 数据库的结构设计,使用的是 Navicat Premium 和SQLiteStudio 可视化工具,对命令行了解不多……
请对SQLite 数据库精通的大神出手帮忙指点迷津,不胜感激

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

一闪一闪233 发表于 2023-6-1 22:33
本帖最后由 一闪一闪233 于 2023-6-2 01:11 编辑

你用的是php不是c语言,插入的时候多维护个拼音列吧,查的时候按拼音列查
zpy2 发表于 2023-6-2 05:08
boxer 发表于 2023-6-2 07:26
一闪一闪233 发表于 2023-6-1 22:33
你用的是php不是c语言,插入的时候多维护个拼音列吧,查的时候按拼音列查

感觉你的方法是最好的, 特别是, 数据库 "查询" 操作是最常用的, 增加一个字段不用每次都查找,效率最高
 楼主| wlue 发表于 2023-6-2 09:38
zpy2 发表于 2023-6-2 05:08
https://club.excelhome.net/forum ... ile&_dsign=cf55a38d
https://club.excelhome.net/forum.php?mod=v ...

您这个是操作 excel 表格的方法,不是操作SQLite数据库的……
 楼主| wlue 发表于 2023-6-2 09:45
一闪一闪233 发表于 2023-6-1 22:33
你用的是php不是c语言,插入的时候多维护个拼音列吧,查的时候按拼音列查

这样设计数据库有冗余字段呀……
其实我就是想通过一条SQL语句,使查询的结果集显示在页面中,以前用MySQL 和 Access 数据库都支持按照中文字段排序,没想到 SQLite 数据库遇到这个问题……
不过对于一个小型系统 用 SQLite 数据库真的很不错……
zpy2 发表于 2023-6-2 12:44
wlue 发表于 2023-6-2 09:38
您这个是操作 excel 表格的方法,不是操作SQLite数据库的……

COLLATE PY_CMP
law.liu 发表于 2023-6-5 11:44
我一会发帖出来,标题“在PHP结合SQLite数据库中实现中文排序的方法”请留意

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
wlue + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| wlue 发表于 2023-6-5 16:46
law.liu 发表于 2023-6-5 11:44
我一会发帖出来,标题“在PHP结合SQLite数据库中实现中文排序的方法”请留意

太感谢了!
law.liu 发表于 2023-6-7 15:34
SQLite 默认是不支持中文按拼音排序,但是可以通过引入一个 SQLite 扩展模块ICU实现中文按拼音排序,我之前试过是可行的。
1、你先去 github下载ICU 模块,必须选择适合你系统的版本
2、 把ICU 模块文件,例如 sqlite3_icu.dll 或 sqlite3_icu.so复制到你的项目目录下面
3、在SQLite 中加载 ICU
[Asm] 纯文本查看 复制代码
SELECT load_extension('./sqlite3_icu.dll');

4、创建一个表并插入数据
[Asm] 纯文本查看 复制代码
CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT);
INSERT INTO mytable (name) VALUES ('张三'), ('李四'), ('王五');

5、使用 ICU的 COLLATE 子句来指定排序规则
[Asm] 纯文本查看 复制代码
SELECT * FROM mytable ORDER BY name COLLATE "UNICODE COLLATION RULES";

这样可以实现按照中文拼音排序

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表