判断临时表是否存在的新方法

IF OBJECT_ID('tempdb..#') IS NOT NULL
DROP TABLE #
此句检查是否存在 临时表'#'

如:

IF OBJECT_ID('tempdb..tempTable') IS NOT NULL
drop table #TempTable
CREATE TABLE #TempTable...

OBJECT_ID此函数返回数据库对象标识号

用OBJECT_ID可以举一反三实现别的功能

如:

if exists (select * from sysobjects where objectproperty(object_id('PerPersonData'),'istable') = 1)

整条语句的意思是判断数据库里有没有存在PerPersonData这样一张表。

OBJECTPROPERTY:返回当前数据库中对象的有关信息。1表“真”。同样可以写成OBJECTPROPERTY(id, sUserTable) = 1

在 PostgreSQL 中,判断两个表是否完全相同,通常涉及到比较它们的列名、数据类型以及数据内容。这不是直接的 SQL 查询语句,而是一个涉及数据比较的过程,因为 SQL 本身并不提供这样的内置函数来直接完成这个任务。不过,你可以通过组合几种操作来接近这个目标,例如: 1. **检查表结构**: - 使用 `pg_catalog.pg_attribute` 视图来获取表的信息,包括列名 (`attname`) 和数据类型 (`atttypid`)。 - 对于每张表,编写一个 SQL 脚本,分别列出这两方面的信息,并保存到临时表或变量中。 2. **数据比较**: - 可能需要分别对每个表的所有列进行逐行比较,看看它们的数据是否匹配。 - 这可以通过 `JOIN` 或者其他脚本语言(如 PL/pgSQL)实现,逐条读取并比较记录。 3. **合并并验证**: - 将上述步骤的结果合并成一个的表或视图,然后检查是否有差异存在。 - 如果所有字段都一致并且数据也一一对应,则认为两张表是相同的。 请注意,实际操作可能非常复杂,特别是在大型表上,尤其是如果表中有大量数据的话。这通常是通过编程的方式来完成,比如 Python 的 psycopg2 库配合 pandas 或者 SQL 的存储过程等工具。 由于这是一个复杂的任务,以下是示例性的伪代码描述: ```sql -- 示例(非直接可用,仅用于演示思路) WITH table_structure AS ( SELECT t1.table_name, a.attname, a.atttypid FROM first_table t1 JOIN pg_attribute a ON t1.oid = a.attrelid ), table_structure_second AS ( SELECT t2.table_name, a.attname, a.atttypid FROM second_table t2 JOIN pg_attribute a ON t2.oid = a.attrelid ) SELECT * FROM table_structure EXCEPT SELECT * FROM table_structure_second; -- 之后再用相同的方法对比数据行,逐列比对每个表的每一行 ``` 完成这种比较后,你可以根据结果检查差异是否存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值