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

Bagaimana Fungsi CHARINDEX() Bekerja di SQL Server (T-SQL)

Di SQL Server, Anda dapat menggunakan T-SQL CHARINDEX() berfungsi untuk menemukan posisi awal ekspresi karakter di dalam ekspresi karakter lain.

Anda memberikan kedua ekspresi karakter sebagai argumen. Anda juga dapat memberikan argumen opsional untuk menentukan posisi untuk memulai pencarian.

Sintaks

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 suka bir. Bob juga suka daging sapi.') AS Result;

Hasil:

+----------+| 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('Bob', 'Kate suka bir. Kate juga suka daging sapi.') AS Result;

Hasil:

+----------+| Hasil ||----------|| 0 |+----------+

Menentukan Posisi Awal

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

Berikut ini contoh untuk didemonstrasikan:

SELECT CHARINDEX('Bob', 'Bob suka bir. Bob juga suka daging sapi.', 16) AS Result;

Hasil:

+----------+| Hasil ||----------|| 17 |+----------+

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 COLLATE klausa ke SELECT . Anda pernyataan:

Berikut adalah contoh yang menyertakan penelusuran peka huruf besar/kecil dan penelusuran peka huruf besar/kecil:

SELECT CHARINDEX('Bir', 'Bob suka bir.' COLLATE Latin1_General_CS_AS) AS 'Sensitif Huruf', CHARINDEX('Bir', 'Bob suka bir.' COLLATE Latin1_General_CI_AS) SEBAGAI 'Peka Huruf Besar-kecil'; 

Hasil:

+------------------+--------------------+| Peka Huruf Besar-kecil | Tidak peka huruf besar/kecil ||-------------------+--------------------|| 0 | 11 |+------------------+--------------------+

Yang pertama peka huruf besar/kecil karena _CS (dalam susunan) adalah singkatan dari Case-Sensitive. Yang kedua tidak peka huruf besar/kecil karena _CI singkatan dari Case-Insensitive.


  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 dalam SQL Server saat mengimpor file CSV meskipun varchar(MAX) digunakan untuk setiap kolom

  2. SQL Server - Cara terbaik untuk mendapatkan identitas baris yang disisipkan?

  3. Pemecahan Masalah SQL Server Selalu Di Grup Ketersediaan

  4. Peningkatan identitas kolom SQL Server 2012 melonjak dari 6 menjadi 1000+ pada entri ke-7

  5. 5 Cara Menghitung Jumlah Tabel Buatan Pengguna dalam Database SQL Server