我有一个Microsoft存储过程,使用OpenQuery查询两个MySQL数据库。两个MySQL数据库应该具有相同的模式,因此我可以在两个上运行相同的查询。
但是,我们很快就会改变MySQL模式,并在表中添加一列。但是这两个MySQL数据库不会同时发生,我不知道发布的确切日期。
因此我想编写查询,这样如果新列存在,那么我在我的select中使用它。如果没有,那么我使用默认值。
这可能吗? (这是一个处理表模式差异的查询?)
(不要与字段肯定存在的'coelesce'混淆,但只是空。)
答案 0 :(得分:0)
您可以使用以下SELECT语句:
SELECT *
FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'database name' AND TABLE_NAME = 'your table name'
AND COLUMN_NAME = 'the column name you want to check for'
如果以上内容返回值,则您的列就在那里。如果没有,则运行备用SELECT语句
更新声明:
IF EXISTS (SELECT *
FROM OPENQUERY(servername, 'SELECT *
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = ''database name''
AND TABLE_NAME = ''your table name''
AND COLUMN_NAME = ''the column name you want to check for'' ))