Sql 标记类似于表名的查询的列名
给定一个具有如下命名方案的表: 例1:Sql 标记类似于表名的查询的列名,sql,database,netezza,Sql,Database,Netezza,给定一个具有如下命名方案的表: 例1: INFO_APPLICATION_B CORRESPOND_U|OBJECTIVE_U|APPLICATION_U|DENIED_U|ACCEPTED_U| 例2: INFO_CITIZEN_B REFUGEE_U|INCOME_U|EDUCATION_U|CITIZEN_U| 我想过滤掉表中与表名类似的列名(如示例中所示)。确切地说,在第一个示例中,由于第3列与其各自的表名相似,因此最好标记第3列。在示例2中也有相同的想法,其中第4列将被标记 如
INFO_APPLICATION_B
CORRESPOND_U|OBJECTIVE_U|APPLICATION_U|DENIED_U|ACCEPTED_U|
例2:
INFO_CITIZEN_B
REFUGEE_U|INCOME_U|EDUCATION_U|CITIZEN_U|
我想过滤掉表中与表名类似的列名(如示例中所示)。确切地说,在第一个示例中,由于第3列与其各自的表名相似,因此最好标记第3列。在示例2中也有相同的想法,其中第4列将被标记
如何在SQL
中执行此操作
我想要一个不显示名称与表名类似的列的输出:
对应|客观|否认|接受||
注意“APPLICATION_U”是如何不再存在的,因为它与表名“APPLICATION_B”相似。通过
\U v_relationship_列
循环,并确定该列是否包含表中的文本
我猜你在其他方面的意思是“相似”,但我只是在以你为例
create or replace find_similar_columns(varchar(any))
returns varchar
language nzplsql
begin_proc
declare
input_table alias for $1;
included_columns varchar;
delimiter varchar;
column record;
filtered_column varchar;
begin
delimiter := '|';
included_columns := '';
for column in
select
attname
from
_v_relation_column
where
name = input_table order by attnum
loop
filtered_column := replace(column.attname, '\_U', '');
if input_table not like '%' || filtered_column || '%' then
included_columns := included_columns || delimiter || column.attname;
end if;
end loop;
end;
end_proc;
请把标签贴好。是哪一个?MySQL或SQL Server?您能编辑您的问题并显示您想要的输出吗?