1
create table TABLE1(
column1 varchar (100),
column2 varchar (100)
)
go
create table TABLE2(
column_for_compare varchar (100)
)
go
insert into TABLE2 values ('column1')
insert into TABLE2 values ('column2')
go

我想检查 TABLE2 中是否存在 TABLE1 列名,如下所示: -- 这应该将 TABLE2 中的行值与 TABLE1 中的列名进行比较

if exists(select column_for_compare from TABLE2) and if exists(select column_name from syscolumn key join systable where table_name ='TABLE1') begin print 'match found' end

我希望你能看到我在尝试什么......如果不是......如果会尝试更好地解释它

4

2 回答 2

1

您可以查询 USER_TAB_COLUMNS 表以获取列名称

SELECT column_name
FROM USER_TAB_COLUMNS
WHERE table_name = 'TABLE1'

然后将结果与 TABLE2 连接起来

SELECT *
FROM TABLE2, (SELECT column_name
                FROM USER_TAB_COLUMNS
                WHERE table_name = 'TABLE1') as cNames
WHERE TABLE2.column_for_compare=cNames.column_name

这将为您提供一个表,其中 table_1 中的列名称存在于 table_2 的行中

于 2014-10-16T10:15:07.830 回答
0

此查询将仅返回 TABLE2 中作为 TABLE1 中的列的值。如果不更改查询,您将无法打印“找到匹配”,因为您需要遍历 TABLE2 中的每一行或更改查询,以便对 TABLE2 中的所有值进行比较。

SELECT
    *

FROM
    TABLE2
    JOIN INFORMATION_SCHEMA.COLUMNS
        ON  TABLE2.column_for_compare = COLUMNS.COLUMN_NAME

WHERE
    COLUMNS.TABLE_NAME = 'TABLE1'
于 2014-10-16T10:07:58.480 回答