Srinivasan
Srinivasan

Reputation: 12040

Oracle Pattern matching

In Oracle I want to check whether the string has "=' sign at the end. could you please let me know how to check it. If it has '=' sign at the end of string, I need to trailing that '=' sign.

for eg,

varStr VARCHAR2(20);

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

Upvotes: 0

Views: 65

Answers (3)

Bob
Bob

Reputation: 1055

It seems that substr is the way to go, at lease with my sample data of about 400K address lines this returns 1043 entries that end in 'r' in an average of 0.2 seconds.

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

On the other hand, the following returns the same results but takes 1.1 seconds.

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

Upvotes: 0

user330315
user330315

Reputation:

I don't think you need "pattern matching" here. Just check if the last character is the =

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

substr when called with a negative position will work from the end of the string, so substr(varstr,-1,1) extracts the last character of the given string.

Upvotes: 2

Jorge Campos
Jorge Campos

Reputation: 23361

Use the REGEX_EXP function. I'm putting a sql command since you didn't specify on your question.:

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

The pattern $ means that the precedent character should be at the end of the string.

see it here on sql fiddle: http://sqlfiddle.com/#!4/d8afd/3

Upvotes: 0

Related Questions