当前需要清理某个表中所有字段,检查是否有包含@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@%';
通过这种方式相对来说可以更加快速匹配数据和定位问题字段。