Chcę tylko uzyskać zapisy, które mają kilka słów w jednej kolumnie, próbowałem przy użyciu WHERE ... IN (...)
, ale Postgres rozróżnia wielkość liter w tym klauzuli where. Dlatego próbowałem operatora regex i ~*
.Regex, aby znaleźć pełne słowa na Postgresql
Poniżej znajduje się fragment kodu SQL, który zwraca wszystkie kolumny i tabele z bazy danych, chcę ograniczyć wiersze, aby wprowadzić tylko tabele w wyrażeniu regularnym.
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
Ten regex przyniesie wszystkie kolumny sald i kolumny tabel zawierających słowa kluczowego 'sald.
Chcę ograniczyć wynik, aby uzupełnić tylko nazwy.
W Postgres '\ b' oznacza' backspace, jak w C'. Możesz użyć '\ y' dla' dopasowań tylko na początku lub na końcu słowa'. Szczegóły ['here'] (http://www.postgresql.org/docs/current/static/functions-matching.html) –
@IgorRomanchenko Tak, dzięki za wskazanie! – acdcjunior
Pedantyczny, ale powiedziałbym "wiele innych silników regex" zamiast "zwykłych wyrażeń regularnych" - regexes nie są tak naprawdę standaryzowane, więc zazwyczaj najlepiej jest znaleźć podręcznik dla dowolnego "smaku" danego narzędzia, a nie robić żadnych założeń. – IMSoP