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中的列名进行比较
如果存在(从TABLE2中选择column_for_compare)和 if exists(从syscolumn key join systable中选择column_name,其中table_name ='TABLE1') 开始 打印'匹配发现' 端
我希望你能看到我正在尝试的......如果不是......如果会尝试更好地解释它
答案 0 :(得分: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
中的行中答案 1 :(得分:0)
此查询仅返回TABLE2中作为TABLE1中列的值。您无法在不更改查询的情况下进行PRINT'Match Found',因为您需要迭代TABLE2中的每一行或更改查询,以便您对TABLE2中的所有值进行比较。
SELECT
*
FROM
TABLE2
JOIN INFORMATION_SCHEMA.COLUMNS
ON TABLE2.column_for_compare = COLUMNS.COLUMN_NAME
WHERE
COLUMNS.TABLE_NAME = 'TABLE1'