Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server Berisi Fungsi Teks Lengkap Tidak Mengembalikan Hasil yang Diharapkan

Dalam Fulltext, semua karakter nonalfanumerik dihapus dalam indeks dan diganti dengan yang kosong .Jadi dalam pencarian Anda, karena Anda memiliki "." dalam string, Anda mencari "situs web" dan "bersih".

Anda dapat memperbaikinya dengan 2 cara.

Anda perlu memiliki tabel terpisah atau bidang terpisah yang memiliki data teks lengkap, terpisah dari tabel asli jika Anda menyimpan data asli.

Di tabel teks lengkap, Anda dapat menghapus ". " dan simpan "websitenet ".

Dalam hal ini, Anda harus menghapus semua "." dari string pencarian sebelum Anda melakukan kueri. Jika Anda ingin menanyakan dengan ".", Anda harus mengganti "." dengan string karakter -misalnya "titik".

Jadi dalam hal ini Anda akan menyimpan "websitedotnet ".

Saat Anda mencari kali ini, Anda mengganti semua "." dengan "titik" dalam kueri.

OK sekarang kasus Anda dengan bidang baru tempat menyimpan kolom yang akan dicari oleh FTS jadi:

    ID      DESCRIPTION               DESCFTS
    -----------------------------------------------------
    1   this is a website.        this is a websitedot
    2   a website exists.         a website existsdot
    3   go to mywebsite.net       go to mywebsitedotnet
    4   go to mywebsite.net.      go to mywebsitedotnetdot

lalu pertanyaan Anda:

declare @search_client nvarchar(100) = 'website'

set @search_client = replace(@search_client, '.', 'dot')

select * from dbo.temp where contains ((DESCFTS), @search_client)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan Pengakuan Jabat Tangan Pra-Login SQL Server

  2. Bagaimana cara mendeteksi jika string berisi setidaknya angka?

  3. Ganti kemunculan pertama substring dalam string di SQL

  4. pyodbc:Bagaimana cara mencoba kembali untuk memulihkan dari kesalahan Sementara?

  5. Cara menggunakan hasil dari pernyataan pemilihan SQL dalam fungsi dbo.fnSplit sebagai input