检查列存在于 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 中选择 COUNT(*)。列 其中 TABLE_NAME = 第 1 行的"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 

如果您尝试将其用作存储过程的一部分,则可以查看 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'

案例语句在较小的数据库上更快

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

喜欢这个:

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

相关内容

  • 没有找到相关文章

最新更新