当前位置: 首页 > 面试题库 >

更新以特定字符串开头的多个列

闾丘英悟
2023-03-14
问题内容

我正在尝试更新数据库中的一堆列,以测试功能。我有一个使用休眠模式构建的表,因此为嵌入式实体创建的所有列均以相同的名称开头。即contact_info_address_street1contact_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接受的函数。我将留给读者练习:)



 类似资料:
  • 问题内容: 我有一个div,其中可能有来自多个组的任何数量的类。每个组都有一个特定的前缀。在javascript中,我不知道该群组中的哪个类位于div上。我希望能够清除具有给定前缀的所有类,然后添加一个新的类。如果要删除所有以“ bg”开头的类,该怎么做?像这样的东西,但实际上有效: 问题答案: 使用jQuery,实际的DOM元素的索引为零,这应该可以工作

  • 我得到以下字符串: 我想从里面拿走食物和饮料。 我尝试了以下代码: 但它给人的感觉是,食物很刺激,喝了很多,离食物很近,三个和四个。

  • 我想知道如何检查文件是否存在: 例如,我有很多文件: 如何检查以Bob开头的文件是否存在?

  • 问题内容: 我想在elasticsearch中编写一个查询,这样它只会给出字符串从特定单词开始的结果,例如,如果我要搜索“ Donald”,则我现在有一个字符串“ Donald Duck”,而另一个字符串是“ Alan Donald” “与以下查询 那么结果应该是“ Donald Duck”而不是“ Alan Donald”,因为在“ Donald Duck”中,它以“ Donald”开头。现在有

  • 问题内容: 我正在尝试检查字符串是否以开头。我该如何检查? 问题答案: 使用 substr 函数返回字符串的一部分。 如果您要确保它不是另一个协议。我会改用https,因为https也可以匹配,例如http-protocol.com。 一般而言:

  • 问题内容: 我有一个看起来像这样的数组: 我如何仅获取以其开头的元素? 问题答案: