Pergunta

SELECT COUNT (*) FROM tabela WHERE coluna ilike '% /%';

me dá o número de valores que contém "/"

Como a fazer o mesmo para "\"?

Foi útil?

Solução

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

Outras dicas

Trecho do docs :

Note que a barra invertida já tem um significado especial em strings literais, então a escrever uma constante padrão que contém uma barra invertida você deve escrever duas barras invertidas em uma instrução SQL (assumindo fuga sintaxe da cadeia é usado, ver Secção 4.1.2.1). Assim, escrever um padrão que realmente corresponde um meio barra invertida literal escrevendo quatro barras invertidas na declaração. Você pode evitar isso, a seleção de um caractere de escape diferente com ESCAPE; em seguida, uma barra invertida não é especial a gostar mais. (Mas ainda é especial para o analisador literal string, então você ainda precisa de dois deles.)

ainda melhor - não use como, é só usar posição padrão:

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

Você precisa E'\\\\' porque o argumento para LIKE é um regex e caractere de escape regex já está \ (por exemplo ~ E'\\w' iria corresponder a qualquer cadeia que contenha um caractere de impressão).

Veja a doc

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top