Ví dụ sau trả về tất cả các hàng không chứa bất kỳ số nào trong PostgreSQL.
Số có thể được biểu thị bằng từ và các ký hiệu khác, nhưng đối với bài viết này, "số" chỉ có nghĩa là "chữ số". Vì vậy, chúng tôi đang tìm các giá trị không chứa bất kỳ chữ số nào.
Ví dụ
Giả sử chúng ta có một bảng được gọi là Products
với dữ liệu sau trong ProductName
của nó cột:
SELECT ProductName
FROM Products;
Kết quả:
productname --------------------------------- Left handed screwdriver Right handed screwdriver Long Weight (blue) Long Weight (green) Straw Dog Box Bottomless Coffee Mugs (4 Pack) Smash 2000 Sledge Hammer Chainsaw (3 spare fingers)
Cột này chứa dữ liệu ký tự, nhưng một số hàng chứa số trong dữ liệu ký tự đó (ngay cả khi chúng không được lưu trữ dưới dạng số).
Chúng tôi có thể sử dụng truy vấn sau để chỉ trả về những hàng không chứa bất kỳ chữ số nào:
SELECT ProductName
FROM Products
WHERE ProductName !~ '[0-9]+';
Kết quả:
productname -------------------------- Left handed screwdriver Right handed screwdriver Long Weight (blue) Long Weight (green) Straw Dog Box (5 rows)
Như mong đợi, chỉ những hàng không chứa bất kỳ chữ số nào mới được trả về.
Trong PostgreSQL, !~
là một toán tử phân biệt chữ hoa chữ thường được sử dụng để trả về các giá trị không khớp với biểu thức chính quy đã cho. Đối với các kết quả khớp không phân biệt chữ hoa chữ thường, hãy sử dụng !~*
.
Bạn có thể sử dụng ~
để trả về tất cả các hàng do khớp với biểu thức chính quy (và ~*
đối với các kết quả phù hợp không phân biệt chữ hoa chữ thường).