我正在尝试更新数据库中的一堆列,以测试功能。我有一个使用休眠模式构建的表,因此为嵌入式实体创建的所有列均以相同的名称开头。即contact_info_address_street1,contact_info_address_street2等等。
contact_info_address_street1
contact_info_address_street2
我试图找出是否有办法对以下事情产生影响:
UPDATE table SET contact_info_address_* = null;
如果没有,我知道我可以做很长的路要走,如果我需要针对另一组不同的栏目再次进行此操作,则只是寻找一种将来可以帮助自己的方法。
没有方便的快捷方式,对不起。如果您必须做很多这样的事情,则可以创建一个函数来动态执行sql并实现您的目标。
CREATE OR REPLACE FUNCTION reset_cols() RETURNS boolean AS $$ BEGIN EXECUTE (select 'UPDATE table SET ' || array_to_string(array( select column_name::text from information_schema.columns where table_name = 'table' and column_name::text like 'contact_info_address_%' ),' = NULL,') || ' = NULL'); RETURN true; END; $$ LANGUAGE plpgsql; -- run the function SELECT reset_cols();
虽然不是很好。更好的函数是将表名和列前缀作为args接受的函数。我将留给读者练习:)