我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论.
当谷歌找到答案时,你会得到很多不同的答案.这样做是否有正式/后向和前向兼容的方式?
这有两种可行的方法.这两者中哪一个是标准/最佳方式?
第一种方式:
IF EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_NAME='mytablename')
SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)
第二种方式:
IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL
SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)
MySQL提供简单
SHOW TABLES LIKE '%tablename%';
Run Code Online (Sandbox Code Playgroud)
声明.我正在寻找类似的东西.
现在我有这个说法
DELETE FROM sqlite_sequence where name = 'table_name';
Run Code Online (Sandbox Code Playgroud)
在大多数情况下工作正常,但现在我有一个sqlite_sequence表没有创建表的情况,所以我回来了
no such table: sqlite_sequence
Run Code Online (Sandbox Code Playgroud)
我需要一个声明,如果表存在,只执行删除.我发现这个陈述告诉我表是否存在
SELECT name FROM sqlite_master WHERE type='table';
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我一直无法成功地将它与删除声明配对
我有很多删除查询,但在某些生产数据库中找不到某些表。我需要对这个问题做出简单的决定。
查询如
DELETE b.* FROM `table` b
JOIN `another_table` u
ON u.key2 = b.key
WHERE u.key3 <> ?
Run Code Online (Sandbox Code Playgroud)
我需要类似的东西:
IF TABLE `table` EXISTS DELETE b.* FROM `table` b ...
Run Code Online (Sandbox Code Playgroud)