Voglio solo ottenere i record che hanno alcune parole in una colonna, ho provato a utilizzare WHERE ... IN (...)
ma Postgres è case sensitive in questa clausola where. Ecco perché ho provato regex e l'operatore ~*
.Regex per trovare parole complete a Postgresql
Il seguente è un frammento SQL che restituisce tutte le colonne e le tabelle dal DB, voglio limitare le righe per portare solo le tabelle nell'espressione 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
Questa espressione regolare porterà tutte le colonne dei saldi e le colonne delle tabelle che contengono la parola 'SALDI'.
Voglio limitare il risultato solo ai nomi completi.
In Postgres '\ b' significa' backspace, come in C'. Puoi usare '\ y' per' corrispondenze solo all'inizio o alla fine di una parola'. Dettagli ['here'] (http://www.postgresql.org/docs/current/static/functions-matching.html) –
@IgorRomanchenko Sì, grazie per averlo fatto notare! – acdcjunior
Pedantico, ma direi "molti altri regex engine" piuttosto che "regular reisex" - le regex non sono realmente standardizzate, quindi di solito è meglio trovare il manuale per qualunque "flavor" su uno strumento particolare anziché fare qualche ipotesi. – IMSoP