LIKE hỗ trợ so khớp mẫu bằng _
cho bất kỳ ký tự đơn nào và %
cho bất kỳ chuỗi ký tự nào như sau:
SELECT 'thomas' LIKE '%(h|x)%'
không hoạt động vì LIKE không hiểu (...)
để phân nhóm hoặc |
để thay thế, đó chỉ là các ký tự chữ trong mẫu LIKE.
SIMILAR TO hỗ trợ _
và %
giống như LIKE nhưng thêm nhóm với (...)
, xen kẽ với |
và một số thứ khác như sau:
SELECT 'thomas' SIMILAR TO '%(h|x)%'
hoạt động như mong đợi.
~*
sử dụng các biểu thức POSIX nên (...)
là để nhóm và |
là để thay thế nhưng %
chỉ là một dấu phần trăm; điều đó có nghĩa là điều này:
SELECT 'thomas' ~* '%(h|x)%'
đang tìm kiếm một h
hoặc x
được bao quanh bởi các ký hiệu phần trăm và không hoạt động theo cách bạn mong đợi.
~*
của bạn phiên bản sẽ hoạt động nếu bạn sử dụng regex thích hợp như:
SELECT 'thomas' ~* '(h|x)' -- alternation
SELECT 'thomas' ~* 'h|x' -- alternation without an unnecessary grouping
SELECT 'thomas' ~* '[hx]' -- or a character class
Tài liệu được liên kết ở trên bao gồm tất cả những điều này.