Pergunta

Eu preciso de um meio de verificar se uma string tem o seguinte padrão exato dentro dela, ou seja:

(P)

Exemplos onde isso seria verdade é:

'Sistema de teste (P)'

Não sabe como verificar os casos quando a string que não tem '(p)', ou seja:

'Sistema de teste (GUI for Prof)' - Nesse caso, isso seria falso, mas eu estou usando regexp_like e realmente retorna true.

Eu só quero que ele retorne true quando a string exata de '(p)' existe na sequência de pesquisa.

Qualquer ajuda para conseguir isso usando PL/SQL seria ótima.

Obrigado.

Foi útil?

Solução

Usar:

REGEX_LIKE(t.column, '\(P\)')

Expressões regulares.info é um ótimo recurso.

Regular Instr funcionaria (Oracle 8i+):

WHERE INSTR(t.column, '(P)') > 0 --column contains '(P)'

WHERE INSTR(t.column, '(P)') = 0 --column does NOT contain '(P)'

Como obras também:

WHERE t.column LIKE '%(P)%' --column contains '(P)'

WHERE t.column NOT LIKE '%(P)%' --column does NOT contain '(P)'

Outras dicas

Tentar like:

WHERE thing like '%(P)%';

Eu ficaria com REGEXP_* Funções, como você precisará praticá -las de qualquer maneira, e conhecer expressões regulares o servirá bem.

São todas as boas respostas, exceto por um erro de digitação na primeira resposta dos pôneis. :

O erro de digitação é que há um P Falta de regex_like:

Escrito: REGEX_LIKE(t.column, '\(P\)')

Correto: REGEXP_LIKE(T.COLUMN, '\(P\)')

O '' é um personagem de fuga que diz "Não procure o significado simbólico do próximo personagem, mas procure o próprio caráter literal".

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