其实这是一个误区,SQLite本身没这个函数,order by的时候肯定出错,我的同事之所以想使用这个就是想返回指定顺序的排序而已,想用SQLite实现MySQL的下述指令:

SELECT * FROM tablename WHERE id IN (1,10,8,5) ORDER BY FIND_IN_SET(id, '1,10,8,5')

开始找了半天方法完全没必要,这返回的是php中数组,既然有返回,那不妨将排序的部分放到返回数组之前,将排序后的结果返回即可。
示例如下:

$posts=getPostsByRelated();//直接取出数据,sql 指令为 select rowid,title from post where rowid in (68234,12016,16776,64147)
$orderarray=explode(",","68234,12016,16776,64147");//分割排序的id到数组
$newarray=array();
foreach($posts as $post){
$newarray[array_search($post['rowid'],$orderarray)]=$post;//根据值查找key并赋值给新数组
}
ksort($newarray);//按key排序,此时新数组就是按68234,12016,16776,64147排序后的了

Related Posts: SQLite实现MySQL的ORDER BY FIND_IN_SET :