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

Cara Menemukan String di dalam String di SQL Server

Di SQL Server, Anda dapat menggunakan T-SQL CHARINDEX() fungsi atau PATINDEX() berfungsi untuk mencari string di dalam string lain. Berikut adalah ikhtisar singkat dari setiap fungsi.

Fungsi CHARINDEX()

Fungsi ini menerima 3 argumen; string untuk ditemukan, string untuk dicari, dan posisi awal opsional.

CHARINDEX() sintaksnya seperti ini:

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Dimana expressionToFind adalah ekspresi yang ingin Anda temukan di string lain, dan expressionToSearch adalah string lainnya. start_locationoptional opsional dapat digunakan untuk menentukan posisi dalam expressionToSearch untuk memulai pencarian.

Perhatikan bahwa hanya posisi kemunculan pertama yang dikembalikan.

Contoh

Ini contohnya:

SELECT CHARINDEX('Bob', 'Bob likes beer. Bob also likes beef.');

Hasil:

1

Dalam contoh ini, argumen pertama adalah Bob , yang berarti kita sedang mencari argumen kedua untuk Bob . Hasilnya 1 karena itulah posisi Bob pertama muncul di argumen kedua.

Anda mungkin juga memperhatikan bahwa Bob sebenarnya muncul dua kali dalam string, tetapi hanya posisi kecocokan pertama yang dikembalikan.

Tidak Cocok

Jika argumen kedua tidak mengandung Bob hasilnya akan menjadi 0 .

SELECT CHARINDEX('Kate', 'Bob likes beer. Bob also likes beef.');

Hasil:

0

Menentukan Posisi Awal

Anda dapat menentukan posisi awal untuk memulai pencarian. Ini berarti bahwa SQL Server akan melewatkan setiap kejadian yang terjadi sebelum posisi awal tersebut. Namun, hasilnya tetap dilaporkan berdasarkan posisinya di dalam string (bukan dari posisi awal).

Jika ini terdengar membingungkan, contoh berikut akan membantu:

SELECT CHARINDEX('Bob', 'Bob likes beer. Bob also likes beef.', 16);

Hasil:

17

Jadi dalam contoh ini kita mulai mencari di posisi 16 (yang kebetulan adalah spasi sebelum Bob ke-2 ). Hasilnya adalah kemunculan pertama Bob dilewati, dan posisi yang kedua dikembalikan. Dan kita dapat melihat bahwa posisinya adalah 17 karakter dari awal string (walaupun hanya satu karakter dari tempat kita mulai mencari).

Sensitivitas Huruf Besar

Anda dapat secara eksplisit melakukan pencarian peka huruf besar/kecil dengan menambahkan klausa COLLATE ke pernyataan SELECT Anda:

Peka Huruf Besar-kecil

Berikut penelusuran peka huruf besar/kecil:

SELECT CHARINDEX('Beer', 'Bob likes beer.' COLLATE Latin1_General_CS_AS);

Hasil:

0

Ini peka huruf besar/kecil karena _CS singkatan dari Case-Sensitive.

Peka Huruf Besar dan Kecil

Dan inilah pencarian peka huruf besar/kecil:

SELECT CHARINDEX('Beer', 'Bob likes beer.' COLLATE Latin1_General_CI_AS);

Hasil:

11

Ini peka huruf besar/kecil karena _CI singkatan dari Case-Insensitive.

Fungsi PATINDEX()

PATINDEX() function melakukan pekerjaan yang mirip dengan CHARINDEX() . Anda pada dasarnya memiliki pilihan mana yang akan digunakan. Perbedaan utama terletak pada sintaks.

PATINDEX() sintaks fungsi berjalan seperti ini:

PATINDEX ( '%pattern%' , expression )

Di mana pola adalah ekspresi karakter yang berisi urutan yang akan ditemukan, dan ekspresi adalah ekspresi yang akan dicari (biasanya kolom).

PATINDEX() menerima karakter wildcard, tetapi bukan posisi awal. CHARINDEX() di sisi lain menerima posisi awal, tetapi bukan karakter wildcard.

Contoh

Ini contohnya:

SELECT PATINDEX('%eer%', 'Bob likes beer.');

Hasil:

12

Namun, inilah yang terjadi jika kami tidak menyertakan karakter wildcard:

SELECT PATINDEX('eer', 'Bob likes beer.');

Hasil:

0

Berikut contoh lain di mana kami memperkenalkan karakter wildcard lain:

SELECT PATINDEX('%b_er%', 'Bob likes beer.');

Hasil:

11

Dalam hal ini, garis bawah (_ ) yang merupakan karakter pengganti untuk setiap karakter tunggal.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghapus nol di depan dari bidang dalam pernyataan SQL

  2. Cara Menggunakan Wizard Impor/Ekspor Di SQL Server - Tutorial SQL Server / TSQL Bagian 104

  3. Bagaimana cara menghapus dari beberapa tabel menggunakan INNER JOIN di SQL server

  4. Bagaimana Fungsi STR() Bekerja di SQL Server (T-SQL)

  5. Isi Tanggal yang Hilang untuk Output Kueri SQL Server menggunakan CTE