根据表名称快速查询表所有字段是否包含特定数据筛选

当前需要清理某个表中所有字段,检查是否有包含@DEl@字符的脏数据,如果字段比较少的直接根据字段查询即可,但是如果有几十个字段的话,逐个检查会很慢。

当前使用的方式是:
1:根据表名称获取当前表所有的字段
2:通过字段拼接的方式构建一个筛选条件
3:使用这个统一的一个字段进行查询

以oracle为例:

 SELECT ' ' || LISTAGG(COLUMN_NAME, ' ||  ') WITHIN GROUP(ORDER BY COLUMN_ID) AS full_select_sql
   FROM ALL_TAB_COLUMNS
  WHERE TABLE_NAME = '表名称'
  GROUP BY TABLE_NAME;

在这里插入图片描述

SELECT
	t.ROWID,
	t.* 
FROM
	my_table_name  t 
WHERE
	( COLOR || CART_TYPE || CART_LENGTH ||  其他字段...) LIKE '%@DEL@%';

通过这种方式相对来说可以更加快速匹配数据和定位问题字段。

猜你喜欢

转载自blog.csdn.net/Octopus21/article/details/133279964