Sửa đổi WHERE
của bạn điều kiện như thế này:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Đây là một trong những cách mà Oracle hỗ trợ các ký tự thoát. Tại đây, bạn xác định ký tự thoát với escape
từ khóa. Để biết chi tiết, hãy xem liên kết này trên Tài liệu Oracle.
'_'
và '%'
là các ký tự đại diện trong LIKE
câu lệnh hoạt động trong SQL.
_
ký tự tìm kiếm sự hiện diện của (bất kỳ) một ký tự duy nhất. Nếu bạn tìm kiếm theo columnName LIKE '_abc'
, nó sẽ cung cấp cho bạn kết quả với các hàng có 'aabc'
, 'xabc'
, '1abc'
, '#abc'
nhưng KHÔNG phải 'abc'
, 'abcc'
, 'xabcd'
và như vậy.
'%'
ký tự được sử dụng để khớp với số ký tự 0 hoặc nhiều hơn. Điều đó có nghĩa là, nếu bạn tìm kiếm theo columnName LIKE '%abc'
, nó sẽ cung cấp cho bạn kết quả khi có 'abc'
, 'aabc'
, 'xyzabc'
v.v., nhưng không có 'xyzabcd'
, 'xabcdd'
và bất kỳ chuỗi nào khác không kết thúc bằng 'abc'
.
Trong trường hợp của bạn, bạn đã tìm kiếm theo '%_%'
. Điều này sẽ cung cấp cho tất cả các hàng có cột đó có một hoặc nhiều ký tự, có nghĩa là bất kỳ ký tự nào, làm giá trị của nó. Đây là lý do tại sao bạn nhận được tất cả các hàng mặc dù không có _
trong các giá trị cột của bạn.