Почему этот поисковый запрос ничего не возвращает? - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть эта таблица под user_name='high'

описание_функции:

Акрам на свидании

тест

Акрам учится

test4

Кейт - мужчина

test3

Я хочу запрос, который возвращает результаты поля, которые имеют по крайней мере 'akram'

SELECT * 
  FROM functions 
 WHERE 'isEnabled'=1
   AND 'isPrivate'=1
   AND user_name='high'
   AND function_description LIKE '%akram%'

и это абсолютно ничего не возвращает!

Почему?

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Вы сравниваете строки 'isEnabled' с целым числом 1, что, вероятно, приводит к преобразованию целого числа в строку, и тогда сравнение не удается. (Альтернативой является то, что строка преобразуется в целое число 0, и сравнение по-прежнему не удается.)

В MySQL для цитирования имен столбцов и таблиц используются обратные, а не одинарные кавычки:

SELECT * 
  FROM `functions` 
 WHERE `isEnabled` = 1
   AND `isPrivate` = 1
   AND `user_name` = 'high'
   AND `function_description` LIKE '%akram%'

В стандартном SQL вы используете двойные кавычки для создания «идентификатора с разделителями»; в Microsoft SQL Server вы используете квадратные скобки вокруг имен.

Пожалуйста, в следующий раз более тщательно покажите схему (имена столбцов, значения образцов, типы, если это необходимо).

1 голос
/ 09 декабря 2011

Вы перечисляете имена столбцов, как если бы они были строками.Вот почему он ничего не возвращает.

Попробуйте:

SELECT * 
FROM functions 
WHERE user_name='high'
AND function_description LIKE '%akram%'

edit: после попытки перечитать ваш вопрос ... столбцы isEnabled и isPrivate в этой таблице?edit2: обновлено .. удалить эти неизвестные столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...