_visor_
Апрель 11, 2013 18:16:16
Доброго времени суток!
Вопрос такой, возможно ли использовать LIKE в SELECT при использовании pyodbc? ()
пример:
d=input()
….
('select a,b,c from db where c like', d)
…
к базе и таблице цепляется, а выполнять select не хочет…
есть необходимость проверить вхождение ‘d’ в ‘c’
o7412369815963
Апрель 11, 2013 23:25:45
По идее все команды должны отрабатывать, какую ошибку выдает?
PooH
Апрель 12, 2013 05:18:46
_visor_
('select a,b,c from db where c like', d)
Если это ваш запрос, то в нем ошибка
_visor_
Апрель 12, 2013 08:59:08
PooH
а в чем я ошибся?
использую pyodbc т.к. база на MSSQL. а Pyton 3.х.
почитал мануал pyodbc, ссылок на LIKE совсем не нашел. на форумах тоже нет. может синтаксис не верен? хотя без LIKE прямой запрос к базе …where c=?',d… проходит.
_visor_
Апрель 12, 2013 09:08:27
o7412369815963
тут я не совсем понял какого параметра ему не хватает..
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', ‘HY000’)
Lexander
Апрель 12, 2013 11:07:49
_visor_
а в чем я ошибся?
В синтаксисе использования LIKE. Должны быть кавычки. См. справку по SQL.
_visor_
Апрель 12, 2013 14:04:11
решение немного удивило :-))
('select a,b,c from db where c like ?', d)
и все заработало……
все равно всем спасибо!!
Lexander
Апрель 12, 2013 14:27:12
_visor_
решение немного удивило :-))
Ничего удивительного.
В
документации это описано как
Question mark style, e.g. …WHERE name=?
_visor_
Апрель 12, 2013 14:32:58
с LIKE (=?) почему то не работает. а решение похоже не совсем корректное. оно работает, но результат неполон. странно….
Lexander
Апрель 12, 2013 15:37:24
Потому что синтаксис оператора LIKE отличается от синтаксиса оператора = в самом SQL.
? указывает только на местоположение параметра.
Во всем остальном должен быть соблюден синтаксис SQL.