PostgreSQL - cómo comprobar si mis datos contiene una barra invertida
-
22-08-2019 - |
Pregunta
SELECT count (*) de la tabla donde la columna ilike '% /%';
me da el número de valores que contienen "/"
¿Cómo hacer lo mismo por "\"?
Solución
SELECT count(*)
FROM table
WHERE column ILIKE '%\\\\%';
Otros consejos
Extracto de la docs :
Tenga en cuenta que la barra invertida ya tiene un significado especial en los literales de cadena, por lo que para escribir una constante patrón que contiene una barra invertida debe escribir dos barras invertidas en una instrucción SQL (suponiendo sintaxis de cadena de escape se utiliza, véase la Sección 4.1.2.1). Por lo tanto, escribir un patrón que en realidad coincide con una barra invertida literal significa escribir cuatro barras invertidas en el comunicado. Esto se puede evitar mediante la selección de un carácter de escape diferente con ESCAPE; a continuación, una barra invertida no es especial que gustar más. (Sin embargo, todavía es especial para el programa de análisis literal de cadena, por lo que aún necesita dos de ellos.)
mejor aún - no utilice como, sólo tiene que utilizar la posición estándar:
select count(*) from from table where 0 < position( E'\\' in column );
Es necesario E'\\\\'
porque el argumento de LIKE
es una expresión regular y expresiones regulares de escape carbón ya está \
(por ejemplo ~ E'\\w'
concordaría con cualquier cadena que contiene un char imprimible).
Vea la doc