Название: Помогите написать regexp Отправлено: skydion от Март 09, 2010, 13:38 Ребята нужно написать поиск слова в MySQL по определенной маске и заданой длины...
Думаю юзать regexp но нужных знаний не имею, читал немного по теме, но пока что тяжело самому сделать ??? методом тыка не прошло... пс. Кодировка UTF8, думаю с этим проблем не должно быть? Название: Re: Помогите написать regexp Отправлено: voronElf от Март 09, 2010, 14:17 Поиск нужен в sql запросе или в модели ?
Цитировать по определенной маске так можт масками и пользоваться , они побыстрее регулярок ?Название: Re: Помогите написать regexp Отправлено: skydion от Март 09, 2010, 14:23 А как? Можно пример? А то я только начал с этим разбираться...
Название: Re: Помогите написать regexp Отправлено: alexman от Март 09, 2010, 15:44 Поиск 'SQL LIKE' в инете!
Название: Re: Помогите написать regexp Отправлено: skydion от Март 09, 2010, 16:08 Ну я пробовал, но там почему-то чтобы найти 6-ти символьное слово нужно задать 7 раз "_".
QString tmp = createTemplate(curWord); query.prepare("SELECT _id, _word FROM words WHERE lower(_word) LIKE \"?\";"); query.addBindValue(QVariant(tmp)); почему значение не биндится? На выполнение идет запрос без подставки шаблона/маски? Название: Re: Помогите написать regexp Отправлено: voronElf от Март 10, 2010, 06:57 1. Т.е. все-таки sql
2. Значение не биндится или запрос не выполняется ? 3. я бы пробовал так: Код: QString tmp = createTemplate(curWord); никогда не писал точку с запятой в конце запроса, при забиндивании кавычки сами проставляются насколько знаю Название: Re: Помогите написать regexp Отправлено: skydion от Март 10, 2010, 16:52 1. Т.е. все-таки sql Ну да я же писал что MySQL :)2. Значение не биндится или запрос не выполняется ? Да спасибо так заработало, без кавычек... хотя я и одинарные пробовла тоже не шло...Код: QString tmp = createTemplate(curWord); никогда не писал точку с запятой в конце запроса, при забиндивании кавычки сами проставляются насколько знаю Ну незнаю я всюду пишу точку с запятой ) привычка, вроде нигде не материлось ;) Ну, пока что для тестирования и LIKE подойдет... глюки уже словил :) Но всетаки на будущее нужно регексп, так как возможны условия для подбора слова... Так что помогайте ) как задать длину слова для поиска средствами regexp встроеного в MySQL... ? ps. кто в курсе какая версия sql реализована в драйвере БД Qt 4.6.2? вопрос почему задаю, я вот пользую БД 5.1.44, все ли возможности даной версии я смогу использовать? Название: Re: Помогите написать regexp Отправлено: voronElf от Март 11, 2010, 07:12 чтото в стиле "^.{6}$"
в общем документация MySql, про фигурные скобки смотри Название: Re: Помогите написать regexp Отправлено: skydion от Март 11, 2010, 09:16 Да нет, я такое сам пробовал ::) не работает.... возвращает почему-то трехсимвольные слова...
^.{6, 6}$ так тоже пробовал... выдает Error code 1139, SQL state 42000: Got error 'invalid repetition count(s)' from regexp Название: Re: Помогите написать regexp Отправлено: voronElf от Март 11, 2010, 09:58 на первой попавшейся под руку таблице:
Код: SELECT * FROM `jos_vm_2t_brand` where bname regexp '^.{6}$' Со стороны MySql все норм, проверяй чтобы в mysq запрос приходил именно в таком виде. Мож как то в коде косячится ? Попробуй без забиндивания значений ручками запрос в строке сформировать, должен пройти |