php - sqlite/php-按“输入顺序”排序-内含查询

标签 php sqlite search sql-order-by

美元。

$qtwo = str_split_unicode($q); 
$arrlength = count($qtwo);

然后我得到:
$where = array();
foreach ( $qtwo as $word ) {
$where[] = "CHS LIKE '%" . $word . "%'";
}
$where = implode(' OR ', $where);    

if ($q[0] == "#")  {
} else {$results4 = $db->query("SELECT * FROM FOUR WHERE $where");
while ($row4 = $results4->fetchArray()) {

然后一堆回声等-但结果按字母顺序返回-先到先得,例如:
隔山买老牛
回来作为

——————————————————————————
《现代汉语方言音库•成都话音档》
词:隔
建议:ge2
国际音标:ke²¹
——————————————————————————
《现代汉语方言音库•成都话音档》

建议:mai3
国际音标:mai⁵³
——————————————————————————
《现代汉语方言音库•成都话音档》
词:老
建议:lao3
国际音标:nau⁵³
——————————————————————————
《现代汉语方言音库•成都话音档》

说明:niu2
国际音标:ȵiəu²¹
——————————————————————————
《现代汉语方言音库•成都话音档》
词:山
建议:san1
国际音标

对于任何发现中文种类的外国人来说,这就像搜索:GSMLN,并按字母顺序获取结果:GMLNS
我的目标是使(输出)顺序与输入(顺序)相同。
我可以使用一个简单的订单吗?还是变得更复杂?

最佳答案

在SQL中,表始终是无序的。不能保证查询使用任何特定顺序。

如果要按特定顺序获取行,则必须通过在查询中使用ORDER BY对其进行显式排序。

如果没有可以直接用于排序的表数据,则必须使用CASE expression将表值映射到一些可用于排序的值:

SELECT ...
ORDER BY CASE WordColumn
         WHEN '隔' THEN 1
         WHEN '山' THEN 2
         WHEN '买' THEN 3
         WHEN '老' THEN 4
         WHEN '牛' THEN 5
         END;

关于php - sqlite/php-按“输入顺序”排序-内含查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41217563/

相关文章:

php - 与 symfony2 包混淆

php - 在php中注册用户?

iphone - iOS 设备的本地/嵌入式数据库列表

android - 使用内存中的sqlite android

android - 在整个 SQLite 数据库中搜索关键字以在 Android 应用程序中实现搜索功能

php - laravel 查询不返回值 - 奇怪的 pdo

php - 使用 PHP 从 Azure 网站运行 Azure WebJob

ios - 在 iOS 应用程序中实现 sqlite3_busy_timeout()

python - 如何使用像 len[arry]-1) 这样的 python 在文本文件中获取最后一行作为索引?

android - 在 android 中找到距离 db 最近的 25 个地方很慢