Проверка столбца существует с условием If else в sql
Я пытаюсь проверить, существует ли столбец погоды или нет
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME='businness_id' > 0 ) THEN
PRINT 'test'
Что не так с выше sql? получать ошибку как
У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'IF (выберите COUNT(*) из INFORMATION_SCHEMA.COLUMNS, где TABLE_NAME = 'tb_consu') в строке 1
Новое в SQL. Спасибо за любую помощь,
Версия MySql - 5.X
4 ответа
Вы можете исправить запрос, переместив закрывающую часть:
IF (SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME = 'businness_id'
) > 0 THEN
PRINT 'test'
Лучший способ написать условие использует exists
:
IF EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME = 'businness_id'
) THEN
Если вы попытаетесь использовать это как часть хранимой процедуры, вы можете взглянуть на оператор if в документации mysql.
если вы делаете это как часть обычного запроса, вы можете написать это так
SELECT IF (COUNT(*) > 0, 'TEST, 'TEST FAILED') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME='businness_id'
Я бы предложил использовать оператор CASE в MYSQL
SELECT CASE
WHEN COLUMN_NAME = 'businness_id' then 'TEST'
END
from FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tb_consumer'
Операторы case быстрее в небольших базах данных
Команда SQL не является булевой функцией. Поэтому вам нужно проверить значение.
Как это:
IF (SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME='businness_id') >= 0
THEN PRINT 'test'