Я хочу получить все строки, в которых есть определенный столбец только с двумя словами. Я пробовал это, но не получилось:

SELECT DISTINCT sentence FROM vocab WHERE p='adj' AND sentence REGEXP '^[a-zA-Z]+\s[a-zA-Z]+$'

Похоже, это не работает. Слова могут иметь! или же ? в нем, поэтому я не думаю, что [a-zA-Z] подходит в любом случае.

РЕДАКТИРОВАТЬ: я должен немного перефразировать его, он должен соответствовать любой «группе» символов. Имея в виду

xczc zczxc ~

1233 iojsd

´ + a s ~ º

Могу я использовать что-нибудь вроде (. *)?

2
Cornwell 28 Мар 2014 в 20:07
^[a-zA-Z]+[[:space:]][a-zA-Z]+$
 – 
raina77ow
28 Мар 2014 в 20:15

2 ответа

Лучший ответ

MySQL не поддерживает \s, поэтому вы можете используйте вместо него [[:space:]], вы можете попробовать следующее:

SELECT DISTINCT sentence 
FROM vocab 
WHERE p='adj' 
AND sentence RLIKE '^[[:punct:][:alnum:]]+[[:space:]][[:punct:][:alnum:]]+$'

Он будет искать строки, в которых предложение состоит из двух слов, которые могут содержать буквы, ? или !

Образец SQLFiddle

3
DarkAjax 28 Мар 2014 в 20:35

Не очень красиво, но это должно сработать

'^[a-zA-Z?!]+[[:space:]][a-zA-Z?!]+$'
1
Tytoons 28 Мар 2014 в 20:23