Gostaria de pesquisar um corpo de texto para descobrir quando uma palavra específica está em maiúscula. O MySQL tem uma função REGEXP com a classe de caracteres POSIX [[:upper:]], mas não consigo fazer com que ela retorne nenhum resultado.
Digamos que eu queira pesquisar uma coluna para a string literal 'FREE' apenas em maiúsculas.
Digamos que a estrutura da tabela seja algo como:
CREATE TABLE article_body (
id INT NOT NULL AUTO_INCREMENT,
article_id INT NOT NULL,
summary VARCHAR(255),
body_text TEXT,
PRIMARY KEY(id));
Eu quero encontrar colunas body_text onde a palavra FREE esteja em letras maiúsculas, por exemplo
SELECT id, summary FROM article_body WHERE body_text REGEXP '[[:upper:]]+FREE';
Mas é claro que essa sintaxe é inválida.
Ajuda?
Do artigo sobre mysql REGEXP :
Uma solução simples seria usar o operador BINARY :
Quanto ao motivo pelo qual seu exemplo não funciona, a maneira como o interpreto é "Qualquer string com uma ou mais letras maiúsculas seguidas por FREE", mas é claro que FREE não diferencia maiúsculas de minúsculas.