Câu trả lời:
CHARINDEX () tìm kiếm một chuỗi con trong một chuỗi lớn hơn và trả về vị trí của kết quả khớp hoặc 0 nếu không tìm thấy kết quả khớp
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Chỉnh sửa hoặc từ câu trả lời của daniels, nếu bạn muốn tìm một từ (và không phải là thành phần phụ của từ), cuộc gọi CHARINDEX của bạn sẽ như sau:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Thêm các lệnh gọi REPLACE đệ quy () cho bất kỳ dấu câu nào khác có thể xảy ra
REPLACE
được gọi là chính nó; "lồng nhau" là khi kết quả của một lệnh gọi hàm ngay lập tức được chuyển sang một hàm khác.
select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
và select CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (Trong các bộ sưu tập, CS
viết tắt của Case Sensitive và tôi chắc chắn bạn có thể giải quyết được CI
).
Bạn chỉ có thể sử dụng ký tự đại diện trong vị ngữ (sau IF, WHERE hoặc ON):
@mainstring LIKE '%' + @substring + '%'
hoặc trong trường hợp cụ thể này
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(Đặt khoảng trắng trong chuỗi trích dẫn nếu bạn đang tìm toàn bộ từ hoặc bỏ chúng đi nếu ME có thể là một phần của từ lớn hơn).
N
nếu cột của bạn là một nvarchar
, nếu không bạn sẽ nhận được chuyển đổi theo hàng)