[英]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.