检查列存在于sql中的If else条件

时间:2014-12-02 13:41:42

标签: mysql sql mysql5

我试图检查天气是否存在

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; IF附近使用正确的语法(从INFORMATION_SCHEMA.COLUMNS中选择COUNT(*)其中TABLE_NAME =' tb_consu'在第1行

SQL新手。谢谢你的帮助,

MySql的版本是5.X

4 个答案:

答案 0 :(得分:3)

您可以通过移动结束表单来修复查询:

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 

答案 1 :(得分:1)

SQL命令不是布尔函数。 因此,您需要检查值。

像这样:

IF (SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME='businness_id') >= 0 
THEN PRINT 'test'

答案 2 :(得分:1)

如果您尝试将此作为存储过程的一部分使用,则可以查看the if statement in the mysql documentation

如果您在普通查询中执行此操作,则可以将其写为

SELECT IF (COUNT(*) > 0, 'TEST, 'TEST FAILED') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME='businness_id'

答案 3 :(得分:1)

我建议在MYSQL中使用CASE语句

SELECT CASE 
    WHEN COLUMN_NAME = 'businness_id' then 'TEST'
    END
    from FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = 'tb_consumer'

小型数据库上的案例陈述更快