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

SQL Server Karakter Escape Pencarian Teks Lengkap?

Berita buruk:tidak mungkin. Kabar baik:Anda tidak membutuhkannya (karena itu tidak akan membantu).

Saya telah menghadapi masalah serupa di salah satu proyek saya. Pemahaman saya adalah bahwa saat membangun indeks teks lengkap, SQL Server memperlakukan semua karakter khusus sebagai pembatas kata dan karenanya:

  1. Kata Anda dengan karakter seperti itu direpresentasikan sebagai dua (atau lebih) kata dalam indeks teks lengkap.
  2. Karakter ini dihilangkan dan tidak muncul dalam indeks.

Pertimbangkan kita memiliki tabel berikut dengan indeks teks lengkap yang sesuai untuknya (yang dilewati):

CREATE TABLE [dbo].[ActicleTable] 
(
  [Id] int identity(1,1) not null primary key,
  [ActicleBody] varchar(max) not null
);

Pertimbangkan nanti kita menambahkan baris ke tabel:

INSERT INTO [ActicleTable] values ('digitally improvements folders')
INSERT INTO [ActicleTable] values ('digital"ly improve{ments} fold(ers)')

Coba telusuri:

SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digitally')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improvements')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'folders')

dan

SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digital')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improve')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'fold')

Kondisi grup pertama akan cocok dengan baris pertama (dan bukan yang kedua) sedangkan grup kedua hanya akan cocok dengan baris kedua.

Sayangnya saya tidak dapat menemukan tautan ke MSDN (atau sesuatu) di mana perilaku seperti itu dinyatakan dengan jelas. Namun saya telah menemukan artikel resmi yang menjelaskan cara mengonversi tanda kutip untuk kueri penelusuran teks lengkap, yang [secara implisit] selaras dengan algoritme yang dijelaskan di atas.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah float menjadi varchar di SQL Server tanpa notasi ilmiah

  2. Penggunaan transaksi yang benar di SQL Server

  3. 4 Cara Mendaftar Semua Tampilan di Database SQL Server

  4. Bagaimana melakukan DELETE Pass-Through Query di SQL Server

  5. Bagaimana cara mendapatkan semua kesalahan dari semua paket SSIS dalam sebuah solusi