相关疑难解决方法(0)

检查SQL Server中是否存在表

我希望这是关于如何使用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)

声明.我正在寻找类似的东西.

t-sql sql-server sql-server-2005 sql-server-2000

1068
推荐指数
14
解决办法
116万
查看次数

仅当表存在时才从SQLite中删除

现在我有这个说法

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)

但到目前为止,我一直无法成功地将它与删除声明配对

sql database sqlite

7
推荐指数
1
解决办法
7997
查看次数

如果表存在则删除表中的记录

我有很多删除查询,但在某些生产数据库中找不到某些表。我需要对这个问题做出简单的决定。

查询如

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)

mysql

5
推荐指数
1
解决办法
1万
查看次数