Việc kiểm tra sự không khớp như thế này có thể trở nên phức tạp, vì vậy tôi khuyên bạn nên thử nghiệm cho một kết quả trùng khớp và phủ định kết quả.
Không bắt đầu bằng abc
:
WHERE NOT REGEXP_LIKE(myString, '^abc')
Không kết thúc bằng abc
:
WHERE NOT REGEXP_LIKE(myString, 'abc$')
Về lý do tại sao nó không hoạt động, như @DavidKnipe đã nói trong câu trả lời của mình:đó là vì bạn đang sử dụng các lớp nhân vật. Regex ^[^(abc)]
phân tích cú pháp như thế này:
-
^
đầu tiên nói "neo vào đầu chuỗi" -
[^(abc)]
là một lớp ký tự có nội dung "khớp với bất kỳ đơn lẻ nào miễn là nó không phải là(
hoặca
hoặcb
hoặcc
hoặc)
".