MySQL не имеет перспектив. Обходной путь должен сделать два теста:
WHERE yourcolumn LIKE '%Kansas%'
AND yourcolumn NOT LIKE '%Kansas State%'
Я использовал LIKE
здесь вместо RLIKE
, потому что, как только вы разбили это на части, регулярные выражения больше не нужны. Однако если вам все еще нужны регулярные выражения по другим причинам, вы все равно можете использовать эту же технику.
Обратите внимание, что это не соответствует «Канзасскому штату Канзас», как вы просили.
Обновление: если соответствие «Канзас-Канзас-Стейт» так важно, вы можете использовать это уродливое регулярное выражение, поддерживаемое MySQL:
'Kansas($|[^ ]| ($|[^S])| S($|[^t])| St($|[^a])| Sta($|[^t])| Stat($|[^e]))'
Упс: я только что заметил, что Кип уже обновил свой комментарий решением, очень похожим на это.