Tsql 雪花:删除列(如果存在)

Tsql 雪花:删除列(如果存在),tsql,snowflake-cloud-data-platform,Tsql,Snowflake Cloud Data Platform,我没有找到任何简单的方法在Snowflake中“翻译”下面的t-SQL查询 ALTER TABLE table1 DROP COLUMN if exists [col1] 有什么想法吗? 谢谢 当前无法指定删除列时是否存在_,因此对于简单的转换: ALTER TABLE table1 drop column "col1"; 如果“col1”不存在(用引号括起来使其区分大小写),那么它将导致SQL编译错误。如果生成错误对您的用例不起作用(例如,代码会认为这是一个更严重的问题

我没有找到任何简单的方法在Snowflake中“翻译”下面的t-SQL查询

ALTER TABLE table1
DROP COLUMN if exists [col1]
有什么想法吗?
谢谢

当前无法指定删除列时是否存在_,因此对于简单的转换:

ALTER TABLE table1
drop column "col1";
如果“col1”不存在(用引号括起来使其区分大小写),那么它将导致SQL编译错误。如果生成错误对您的用例不起作用(例如,代码会认为这是一个更严重的问题),您可以在存储过程中使用外部逻辑(如Python)或内部逻辑来检查列是否存在,然后再尝试删除它。您可以使用此SQL测试列是否存在,如果列存在,则返回1,如果不存在,则返回0:

select count(*) as COLUMN_EXISTS
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = 'SCHEMA_TO_CHECK' and
      TABLE_NAME   = 'TABLE_TO_CHECK' and
      COLUMN_NAME  = 'COLUMN_TO_CHECK'
;

当前无法指定删除列时是否存在_,因此对于简单的转换:

ALTER TABLE table1
drop column "col1";
如果“col1”不存在(用引号括起来使其区分大小写),那么它将导致SQL编译错误。如果生成错误对您的用例不起作用(例如,代码会认为这是一个更严重的问题),您可以在存储过程中使用外部逻辑(如Python)或内部逻辑来检查列是否存在,然后再尝试删除它。您可以使用此SQL测试列是否存在,如果列存在,则返回1,如果不存在,则返回0:

select count(*) as COLUMN_EXISTS
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = 'SCHEMA_TO_CHECK' and
      TABLE_NAME   = 'TABLE_TO_CHECK' and
      COLUMN_NAME  = 'COLUMN_TO_CHECK'
;