Saya punya string @mainString = 'CATCH ME IF YOU CAN'
,. Saya ingin memeriksa apakah kata itu ME
ada di dalam @mainString
.
Bagaimana cara memeriksa apakah string memiliki substring tertentu dalam SQL?
Saya punya string @mainString = 'CATCH ME IF YOU CAN'
,. Saya ingin memeriksa apakah kata itu ME
ada di dalam @mainString
.
Bagaimana cara memeriksa apakah string memiliki substring tertentu dalam SQL?
CHARINDEX () mencari substring dalam string yang lebih besar, dan mengembalikan posisi kecocokan, atau 0 jika tidak ada kecocokan yang ditemukan
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Edit atau dari daniels jawab, jika Anda ingin menemukan kata (dan bukan subkomponen kata), panggilan CHARINDEX Anda akan terlihat seperti:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Tambahkan REPLACE rekursif lebih banyak () panggilan untuk tanda baca lain yang mungkin terjadi
REPLACE
dipanggil sendiri; "nested" adalah ketika hasil dari panggilan fungsi segera dialihkan ke fungsi lain.select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
danselect CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (Dalam susunan,CS
singkatan dari Case Sensitive dan saya yakin Anda dapat berolahragaCI
).Anda bisa menggunakan wildcard dalam predikat (setelah IF, WHERE atau ON):
atau dalam kasus khusus ini
(Letakkan spasi di string yang dikutip jika Anda mencari seluruh kata, atau tinggalkan jika ME dapat menjadi bagian dari kata yang lebih besar).
sumber
N
jika kolom Anda adalahnvarchar
, jika tidak, Anda mendapatkan konversi per baris)