2017-01-09 6 views
0

が命名体系を持つテーブルを考えると、テーブル名に類似したクエリの列名にフラグを付けます表の列名を(例のように)表名に似ているものにフィルターするのが良いでしょう。正確には、最初の例では、カラム番号3は、それぞれのテーブル名との類似性のため、理想的にはフラグが立てられます。同じ考え方は、例2では列番号4にフラグが立てられます。は、次のように

SQLでどうすればいいですか? OBJECTIVE_U || DENIED_U | | ACCEPTED_U |

CORRESPOND_U:

私は名前のテーブル名に類似している列が表示されない出力をしたいです

"APPLICATION_U"は、テーブル名 "APPLICATION_B"に類似しているため、そこに存在しないことに注意してください。

+0

正しくタグ付けしてください。どちらですか? MySQLまたはSQL Server? – Eric

+0

質問を編集して、どんな出力を表示できますか? –

答えて

0

ループから_v_relation_columnまでループし、その列にテーブルのテキストが含まれているかどうかを確認します。

他の方法で「類似」を意味すると思われますが、私はあなたの例にちょうど従っています。

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;