MySQL - выберите, где image_url = 0, но вернуть все строки? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь выполнить следующую инструкцию SQL

ожидаемый результат только для image_url со значением 0

SELECT product_id, image_url ОТ tour_product, где image_url = 0

но я получаю все строки, показанные на изображении ниже

enter image description here

Может ли кто-нибудь помочь мне с этим?

Ответы [ 3 ]

2 голосов
/ 09 мая 2019

Ваш image_url тип данных поля является строкой, поэтому он не принимает число, поэтому вы используете одинарную кавычку ''.

как

SELECT product_id, image_url FROM tour_product WHERE image_url = '0'
1 голос
/ 09 мая 2019

Вы сравниваете строку с целым числом. Так что же делать MySQL?

Он делает то, чего ты не ожидал. Он преобразует строку в целое число . Это делается путем преобразования ведущих символов. Если начальных цифр нет, значение равно нулю.

Мораль? Не смешивайте типы. Логика будет:

where image_url = '0'

Или, более вероятно, вы хотите что-то вроде:

where image_url <> ''
0 голосов
/ 14 мая 2019

Попробуйте это

для этого Вы ищете CHAR_LENGTH (), чтобы получить количество символов в строке.

SELECT product_id,image_url FROM tour_product where CHAR_LENGTH (image_url) = 0

ИЛИ

для этого получить всенулевое значение

SELECT product_id,image_url FROM tour_product where CHAR_LENGTH (image_url) = '0';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...