假设我们在表格中有4个项目:
搜索字词为“ Jordan ”,如何按字母顺序排列结果,但搜索字词首先匹配如下:
我正在使用此代码,但没有得到我想要的东西:
$this->db->select('id, name');
$this->db->from('users');
$this->db->like('name', $search_term);
$this->db->order_by('name', 'asc');
$query = $this->db->get();
答案 0 :(得分:10)
试试这个:
SELECT id, fullName
FROM test
ORDER BY FIND_IN_SET('Jordan', REPLACE(fullName, ' ', ',')), fullName;
点击此链接SQL FIDDLE DEMO
<强>输出强>
| ID | FULLNAME |
|----|-------------------|
| 1 | Jordan John |
| 2 | Michel Jordan |
| 4 | Tom Jordan Robert |
| 3 | Adam Mark Jordan |
答案 1 :(得分:6)
你可以试试这个:
$this->db
->select('id, fullName')
->from('test')
->order_by("FIND_IN_SET('Jordan', REPLACE(fullName, ' ', ',')) , fullName");
$query = $this->db->get();
答案 2 :(得分:0)
我对你的尝试:
$this->db->select('id, name, (SELECT name FROM users WHERE name REGEXP "^'.$search_term.'") as "regexp_match"');
$this->db->from('users');
$this->db->like('name', $search_term);
$this->db->order_by('name', 'asc');
$this->db->order_by("regexp_match", "asc");
$query = $this->db->get();
我知道它看起来有点奇怪,但相信我,你想使用REGEXP。 :d