Проверка столбца существует с условием 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'
Другие вопросы по тегам