如何比较行与列?

时间:2014-10-16 09:57:46

标签: sql tsql sybase-iq

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') 开始 打印'匹配发现' 端

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

2 个答案:

答案 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'