Achar encontro consonantal no sql

alguém sabe como faço pra achar encontro consonantal no sql

ja procurei na net e nao achei

Selecione todas as pessoas que possuem encontro consonantal no nome.

preciso achar todas as pessoas que possuem encontro consonantal no nome na tabela

alguém pode ajudar??

Por favor, poderia me dizer depois por que alguem pediria esse tipo de consulta?

SELECT FROM `Pessoa`  WHERE 
	`nome` LIKE '%aa%'  OR  
	`nome` LIKE '%ae%'  OR
	`nome` LIKE '%ai%'  OR
	.
	.
	.
	`nome` LIKE '%uu%' 

tá vendo o exemplo ai acima?
Continua os 3 pontos e terá sua consulta.
Se descobrir outra coisa melhor, por favro posta aqui.

Dicas importantes:
1 - Faça um gerador de codigo para esse tipo de construção;
2 - Utilize um collation que permita acentiação e não diferenciação de maiusculas e minusculas.

Não vou lhe falar qual é a collation. Isso é obrigação sua de estudar.

[]'s

Na verdade as consoantes são: B, C, D, F…

A solução que me vem a cabeça é usar regex, no oracle você consegue usando java stored procedure, já no sql server, somente a partir da versão 2005 poderá usar a CLR (common language runtime).

Fiquei curioso também, para que pode servir uma consulta dessas?

[quote=soaresinfo]Na verdade as consoantes são: B, C, D, F…

A solução que me vem a cabeça é usar regex, no oracle você consegue usando java stored procedure, já no sql server, somente a partir da versão 2005 poderá usar a CLR (common language runtime).[/quote]

Me desculpa sr. daniferreira. o Sr. soaresinfo tem absoluta razão. Obrigado soaresinfo!

SELECT FROM `Pessoa`  WHERE 
	`nome` LIKE '%BB%'  OR  
	`nome` LIKE '%BC%'  OR
	`nome` LIKE '%BD%'  OR
	.
	.
	.
	`nome` LIKE '%ZZ%' 

Coloca cada consoante dentro de um array e constroi seu gerador de código utilizando esse array.

Todos os Bancos de dados atualmente já possuem o recurso de regex?
Para que serviria este tipo de consulta?
Com ficaria o exemplo?
[]'s

muito provável que é exercício de faculdade…

itera cada letra de cada linha do retorno e veja se ambas são diferentes de ‘a’, ‘e’… é mais fácil comparar ambas são não consoantes(vogais) do que se ambas são consoantes… e é mais fácil comparar ambas em separado do que juntas como se fosse um varchar só (que dariam várias possibilidades a mais).

agora por favor pessoal, não postem códigos, deixe o criador do tópico pesquisar para conseguir fazer isso…

Eu não testei, mas acho que este é um bom exemplo

SELECT * FROM nome WHERE name REGEXP '[bcdfghjklmnpqrstvxywz][bcdfghjklmnpqrstvxywz]';

fonte:
http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html

Legal pra caramba isso. Não sabia que o MySQL tinha regex.

é o postgree SQL regex no postgree eu vou dar uma olhada

luis prado tentei sua consulta mais esta dando erro

olha

ERRO: erro de sintaxe em ou próximo a "REGEXP"
LINE 1: SELECT * FROM pessoa WHERE pessoa_nome REGEXP '[bcdfghjklmnp…
^

********** Erro **********

ERRO: erro de sintaxe em ou próximo a "REGEXP"
SQL state: 42601
Caracter: 40

POSTGREESQL

Eu não costumo usar o Postgre, mas pelo que entendi da explicação acho que seria algo assim:

SELECT pessoa_nome FROM pessoa WHERE name ~ '[bcdfghjklmnpqrstvxywz][bcdfghjklmnpqrstvxywz]';

fonte:
http://www.java2s.com/Code/PostgreSQL/String-Functions/Anexampleregularexpression.htm

sugiro vc buscar pelas seguintes palavras chaves juntas :
Expressão regular (E.R.) +
Postgree +
“Select * from”

http://www.google.com.br/#sclient=psy-ab&hl=pt-BR&source=hp&q=postgree+%2B+regex+%2B+"select++from%22&pbx=1&oq=postgree+%2B+regex+%2B+%22select++from%22&aq=f&aqi=&aql=&gs_sm=e&gs_upl=5653l7545l2l7905l2l2l0l0l0l0l291l523l2-2l2l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=22d8d069c072c730&biw=994&bih=496

POsta ai quando conseguir. Sua questão é muito interessante.

[]'s


essa segunda solução sua deu certo

essa segunda solução sua deu certo

Legal!

Agora eu só queria saber como fazer essa query usando o Hibernate.
Por favor, alguem se habilita?

O post do Filipe Sabella é bem interessante e parece ser a solução para o MySQL:
http://www.guj.com.br/java/204092-hibernate-com-expressao-regular

public class RegExpExpression implements Criterion {
    private String property, regexp;

    public RegExpExpression(String property, String regexp) {
        this.property = property;
        this.regexp = regexp;
    }

    public TypedValue[] getTypedValues( Criteria criteria, CriteriaQuery criteriaQuery ) throws HibernateException  {
        return new TypedValue[] { new TypedValue(Hibernate.STRING, regexp, EntityMode.POJO) };
    }
 
    public String toSqlString( Criteria criteria, CriteriaQuery criteriaQuery ) throws HibernateException {
        String column = criteriaQuery.getColumnsUsingProjection(criteria, property)[ 0 ];
       // return column + " REGEXP ?"; // se MySQL
       return column + " ~ ?"; // se postgre?
    }
}

// para usar
session.createCriteria(pessoa.class)
.add( new RegExpExpression("pessoa_nome", "[bcdfghjklmnpqrstvxywz][bcdfghjklmnpqrstvxywz]") )
.list();