Tsql 雪花:删除列(如果存在)
我没有找到任何简单的方法在Snowflake中“翻译”下面的t-SQL查询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编译错误。如果生成错误对您的用例不起作用(例如,代码会认为这是一个更严重的问题
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'
;