繁体   English   中英

检查列是否存在SQL中的If else条件

[英]Checking column exists with If else condition in 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(在INFORMATION_SCHEMA.COLUMNS中选择COUNT(*))附近使用,其中第1行的TABLE_NAME ='tb_consu'

SQL新手。 谢谢你的帮助,

MySql的版本是5.X

您可以通过移动结束括号来解决查询:

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 

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

像这样:

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

如果您尝试将其用作存储过程的一部分,则可以查看mysql文档中的if语句

如果您将此操作作为普通查询的一部分,则可以将其编写为

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

我建议在MYSQL中使用CASE语句

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

在较小的数据库上,case语句更快

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM