PostgreSQL - come controllare se il mio dati contiene una barra rovesciata
-
22-08-2019 - |
Domanda
SELECT count (*) FROM tabella WHERE colonna ilike '% /%';
mi dà il numero di valori contenente "/"
Come fare lo stesso per "\"?
Soluzione
SELECT count(*)
FROM table
WHERE column ILIKE '%\\\\%';
Altri suggerimenti
docs :
Si noti che la barra inversa ha già un significato speciale in stringhe letterali, in modo da scrivere un costante modello che contiene una barra inversa è necessario scrivere due barre rovesciate in un'istruzione SQL (assumendo sintassi stringa di escape viene utilizzato, si veda la Sezione 4.1.2.1). Così, scrivendo un modello che corrisponde in realtà una barra rovesciata letterale significa scrivere quattro barre inverse nell'istruzione. È possibile evitare questo selezionando un carattere di escape diverso con ESCAPE; poi un backslash non è speciale per piace più. (Ma è ancora speciale al parser letterale di stringa, quindi è ancora bisogno di due di loro.)
meglio ancora - non utilizzare come, basta usare posizione standard:
select count(*) from from table where 0 < position( E'\\' in column );
È necessario E'\\\\'
perché l'argomento per LIKE
è una regex e regex fuga char è già \
(es ~ E'\\w'
sarebbe adattarsi a qualsiasi stringa contenente un carattere stampabile).
Vedere la doc