I need help with a difficult query which I may not explain well with words.
The query needs to only return results where all the characters in the code column are in the where clause.
Say I had the following table and wanted to return the code and position where ABC.
Table:
code | position |
---|---|
ABC | 100 |
ABCD | 200 |
ABCDE | 300 |
CBA | 400 |
BCA | 500 |
A | 600 |
BC | 700 |
KABC | 800 |
CABD | 900 |
CA | 1000 |
Expected Results:
code | position |
---|---|
ABC | 100 |
CBA | 400 |
BCA | 500 |
A | 600 |
BC | 700 |
CA | 1000 |
I have tried many variations of like with both % and _ operator’s. Beginning to think MySQL doesn’t have this functionality. Any ideas? I’m at the end of my rope.
Advertisement
Answer
A different approach to @Barbaros Özhan (which I like a lot) is by using REGEXP, like so:
SELECT * FROM test WHERE `code` REGEXP '[^ABC]' = 0;
This is basically filtering out every [code] which contains any other character than ‘ABC’. This is case-sensitive though, but you can add options to the regexp to make it case-insensitive (and many other options).
Check the docs