Tôi muốn chỉ nhận được các bản ghi có một số từ tại một cột, tôi đã thử sử dụng WHERE ... IN (...)
nhưng Postgres phân biệt chữ hoa chữ thường trong mệnh đề where. Đây là lý do tại sao tôi đã thử dùng toán tử regex và ~*
.Regex để tìm các từ hoàn chỉnh tại Postgresql
Sau đây là đoạn mã SQL trả về tất cả các cột và bảng từ DB, tôi muốn hạn chế các hàng để chỉ hiển thị các bảng trong biểu thức regex.
SELECT ordinal_position as COLUMN_ID, TABLE_NAME, COLUMN_NAME
FROM information_schema.columns
WHERE table_schema = 'public' and table_name ~* 'PRODUCTS|BALANCES|BALANCESBARCODEFORMATS|BALANCESEXPORTCATEGORIES|BALANCESEXPORTCATEGORIESSUB'
order by TABLE_NAME, COLUMN_ID
Regex này sẽ mang tất cả các cột BALANCES và cột của bảng chứa từ khóa 'BALANCES'.
Tôi muốn giới hạn kết quả chỉ khi hoàn thành tên.
Trong Postgres '\ b' có nghĩa là' backspace, như trong C'. Bạn có thể sử dụng '\ y' cho' các kết quả phù hợp ở đầu hoặc cuối của từ'. Chi tiết ['here'] (http://www.postgresql.org/docs/current/static/functions-matching.html) –
@IgorRomanchenko Vâng, cảm ơn bạn đã chỉ ra! – acdcjunior
Pedantic, nhưng tôi muốn nói "nhiều công cụ regex khác" thay vì "regexes thông thường" - regexes không thực sự được chuẩn hóa, vì vậy tốt nhất nên tìm hướng dẫn cho bất kỳ "hương vị" nào mà một công cụ cụ thể chạy thay vì đưa ra bất kỳ giả định nào. – IMSoP