PostgreSQL - Comment vérifier si mes données contient une barre oblique inverse

StackOverflow https://stackoverflow.com/questions/706364

  •  22-08-2019
  •  | 
  •  

Question

SELECT COUNT (*) FROM table WHERE colonne ilike '% /%';

me donne le nombre de valeurs contenant "/"

Comment faire la même chose pour "\"?

Était-ce utile?

La solution

SELECT  count(*)
FROM    table
WHERE   column ILIKE '%\\\\%';

Autres conseils

Extrait du docs :

  

Notez que la barre oblique inverse a déjà une signification spéciale dans des chaînes, afin d'écrire une constante de motif qui contient une barre oblique inverse, vous devez écrire deux antislashs dans une instruction SQL (en supposant la syntaxe de chaîne d'échappement est utilisé, voir la section 4.1.2.1). Ainsi, l'écriture d'un motif qui correspond en fait un anti-slash signifie écrire quatre antislashs dans la déclaration. Vous pouvez éviter cela en sélectionnant un caractère d'échappement avec ESCAPE; puis une barre oblique inverse n'est pas particulière à LIKE. (Mais il est toujours particulière à la chaîne analyseur littérale, vous devez donc encore deux d'entre eux.)

mieux encore - ne pas utiliser comme, il suffit d'utiliser la position standard:

select count(*) from from table where 0 < position( E'\\' in column );

Vous avez besoin E'\\\\' parce que l'argument de LIKE est une expression régulière et regex évasion omble chevalier est déjà \ (~ E'\\w' correspondrait par exemple une chaîne contenant char imprimable).

Voir la doc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top