1

When i use LIKE statement in my SQL,

for example,

      SELECT * FROM table WHERE name = "%k"

It will return all rows, where name ends on k.

It can return : Ok, OOk, OOOk,

How i can do same statement but with one letter, so it returns only Ok.

Or 2 letters, so it returns only OOk?

Dani
  • 700
  • 1
  • 6
  • 17
user3090649
  • 1
  • 1
  • 2

5 Answers5

9

_ is a single character wildcard.

SELECT * FROM table WHERE name = `_k`

See this IBM Reference

Kevin Bowersox
  • 93,289
  • 19
  • 159
  • 189
0

Use the equality operator (=) or the IN operator instead of the LIKE operator:

SELECT * FROM table WHERE name IN ('Ok', 'OOk')
Dan
  • 10,480
  • 23
  • 49
0

Use the _ wildcard. It matches only a single character.

_k for Ok. __k for Ook

atripathi
  • 898
  • 3
  • 11
  • 17
0

depending on the length you provide

For 1 character 'X' followed by k

Select * 
from table 
where length(name) = 2 
AND name = "%k"

For 2 character 'X' followed by k

Select * 
from table 
where length(name) = 3
AND name = "%k"
Schuere
  • 1,579
  • 19
  • 33
0

You should use an underscore (_) character. See the documentation about operator LIKE.

So, the query you need (1 or 2 chars before k) is:

SELECT * FROM table WHERE name LIKE '_k' OR name LIKE '__k'
Serge S.
  • 4,855
  • 3
  • 42
  • 46