Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah mungkin untuk memperlakukan tanda hubung dan spasi yang sama dalam SQL?

Seperti yang disarankan seseorang, Anda bisa menyesuaikan dan menggunakan pencarian teks lengkap.

Jika Anda memilih untuk mengambil rute ini, Anda harus mengaktifkan pencarian teks lengkap pada kolom yang diperlukan.

Saya akan menganggap Anda akan memeriksa post_title dan post_body (?), yang membutuhkan Anda untuk menjalankan ini;

ALTER TABLE `posts` ADD FULLTEXT KEY `post_search` (`post_title`,`post_body`);

Setelah selesai, kueri penelusuran Anda dapat dengan mudah diedit menjadi;

$sql = "SELECT * FROM `posts` WHERE MATCH(post_title,post_body) AGAINST '$search'";

Jika Anda ingin pencocokan yang lebih baik, Anda juga dapat memberikan skor dan urutan dengan itu, yang akan memerlukan kode yang mirip dengan ini:

$sql = "SELECT *, MATCH(post_title, post_body) AGAINST ('{$search}') AS score ".
       "FROM `posts` WHERE MATCH(post_title, post_body) AGAINST ('{$search}') ORDER BY `score` DESC";

--- CATATAN

Untuk pencarian, Anda perlu mencari tahu bagaimana Anda akan mencari.

Dalam contoh terakhir saya menggunakan yang serupa, saya hanya memiliki formulir untuk istilah pencarian (Bernama "Search") yang menghasilkan $_POST['search'] dikirim ke server.

Saya kemudian menggunakan;

$search = (array_key_exists('search', $_POST) && is_string($_POST['search'])) ? mysql_real_escape_string($_POST['search'], $c) : FALSE ;
if ($search) {
    // Do the fulltext query requires (See above)
}

Karena pencarian teks lengkap akan mengabaikan tanda hubung, Anda hanya memiliki spasi, yang berfungsi baik untuk teks lengkap, jika Anda memilih untuk menggunakan hasil skor.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urutan hasil berdasarkan data klausa WHERE IN

  2. Sistem Pengguna - Banyak Peran dalam Database MySQL

  3. jika tabel tidak ada, jalankan kueri panjang

  4. Bagaimana cara saya mengurangi menggunakan SQL di MYSQL antara dua nilai waktu tanggal dan mengambil hasilnya dalam menit atau detik?

  5. MULAI TRANSAKSI di dalam BEGIN ... AKHIR konteks atau di luar dan sintaks LOOP