2014-07-14 3 views
0

Dans Oracle, je veux vérifier si la chaîne a un signe "=" à la fin.Pouvez-vous s'il vous plaît laissez-moi savoir comment le vérifier.S'il a '=' signe à la fin de la chaîne, j'ai besoin à queue que '=' signe.Oracle Motif de correspondance

pour exemple,

varStr VARCHAR2(20); 

varStr = 'abcdef='; --needs to trailing '=' sign 

Répondre

0

Utilisez la fonction REGEX_EXP. Je suis en train d'une commande SQL puisque vous n'avez pas spécifié sur votre question .:

select * 
    from someTable 
where regexp_like(someField, '=$'); 

Le motif $ signifie que le caractère précédent doit figurer à la fin de la chaîne.

voir ici au violon sql: http://sqlfiddle.com/#!4/d8afd/3

2

Je ne pense pas que vous avez besoin "pattern matching" ici. Il suffit de vérifier si le dernier caractère est le =

where substr(varstr, -1, 1) = '=' 

substr lorsqu'elle est appelée avec une position négative fonctionnera à partir de la fin de la chaîne, de sorte substr(varstr,-1,1) extrait le dernier caractère de la chaîne donnée.

0

Il semble que substr est la voie à suivre, au loyer avec mes données d'échantillon d'environ 400K lignes d'adresse cela renvoie 1043 entrées qui se terminent par «r» en une moyenne de 0,2 secondes.

select count(*) from addrline where substr(text, -1, 1) = 'r'; 

D'autre part, ce qui suit renvoie les mêmes résultats mais prend 1,1 secondes.

select count(*) from addrline where regexp_like(text, 'r$'); 
Questions connexes