parmanand
parmanand

Reputation: 478

Finding user names with particular characters in their last name

In Oracle SQL, I wish to find all user names,whose Last name contains some specific Characters like ('Z','X','D','F') Or contains Some Range of Characters from 'A-F'.

I tried this:

 SELECT user_last_name
    FROM   userbase
    WHERE  user_last_name LIKE '%A%' OR user_last_name LIKE '%F%' .

So How can I go about it.

And I written facebook in question although its not directly related to it,because,its the example given by my sir.

UPDATE: I tried the above code,it works with so many OR's, but How can we define some range to search for like IN('Z','X','D','F') or IN ('A-F')

Upvotes: 0

Views: 4347

Answers (2)

Justin Cave
Justin Cave

Reputation: 231721

If you are using a recent version of Oracle, you should be able to use regular expressions

SQL> ed
Wrote file afiedt.buf

  1   select first_name, last_name
  2     from employees
  3*   where regexp_like( last_name, 'Z|X|D|[A-F]' )
SQL> /

FIRST_NAME           LAST_NAME
-------------------- -------------------------
Ellen                Abel
Sundar               Ande
Mozhe                Atkinson
David                Austin
Hermann              Baer
Shelli               Baida
Amit                 Banda
Elizabeth            Bates
Sarah                Bell
David                Bernstein
Laura                Bissot
Harrison             Bloom
Alexis               Bull
Anthony              Cabrio
Gerald               Cambrault
Nanette              Cambrault
John                 Chen
Kelly                Chung
Karen                Colmenares
Curtis               Davies
Lex                  De Haan
Julia                Dellinger
Jennifer             Dilly
Louise               Doran
Bruce                Ernst
Alberto              Errazuriz
Britney              Everett
Daniel               Faviet
Pat                  Fay
Kevin                Feeney
Jean                 Fleaur
Tayler               Fox
Adam                 Fripp
Samuel               McCain
Allan                McEwen
Donald               OConnell
Eleni                Zlotkey

37 rows selected.

If you want the search to be case-insensitive

SQL> ed
Wrote file afiedt.buf

  1   select first_name, last_name
  2     from employees
  3*   where regexp_like( last_name, 'Z|X|D|[A-F]', 'i' )
SQL> /

FIRST_NAME           LAST_NAME
-------------------- -------------------------
Ellen                Abel
Sundar               Ande
Mozhe                Atkinson
David                Austin
Hermann              Baer
Shelli               Baida
Amit                 Banda
Elizabeth            Bates
Sarah                Bell
David                Bernstein
Laura                Bissot
Harrison             Bloom
Alexis               Bull
Anthony              Cabrio
Gerald               Cambrault
Nanette              Cambrault
John                 Chen
Kelly                Chung
Karen                Colmenares
Curtis               Davies
Lex                  De Haan
<<snip>>
Matthew              Weiss
Jennifer             Whalen
Eleni                Zlotkey

93 rows selected.

Upvotes: 6

JosephStyons
JosephStyons

Reputation: 58735

You can use INSTR to test whether characters exist in your field, like so:

SELECT
  user_last_name
FROM
  userbase
WHERE 0 < INSTR(user_last_name,'A')
   or 0 < INSTR(user_last_name,'B')
   ...repeat for each character you want to test for...

Upvotes: 0

Related Questions