10

テーブルに4つのアイテムがあるとします。

  1. マイケルジョーダン
  2. トムマークジョーダン
  3. ジョーダンジョン
  4. アダムジョーダンロバート

検索語は「Jordan」です。アルファベット順に並べ替えた結果を取得するにはどうすればよいですか。ただし、検索語が最初に一致するのは次のようになります。

  1. ジョーダンジョン
  2. マイケルジョーダン
  3. トムジョーダンロバート
  4. アダムマークジョーダン

私はこのコードを使用していますが、私が望むものを取得していません:

$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();
4

3 に答える 3

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 |
于 2013-01-10T05:47:15.947 に答える
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

于 2013-02-12T07:09:00.127 に答える