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.