避免 SQL 查询中字符串重复

问题描述 投票:0回答:1

我有一个 SQL 查询,其中字符串列表重复两次:

('foo', 'bar', 'baz', 'bletch')
最可维护的方法是什么来避免这种重复并使代码更加DRY?

我不是在优化查询性能,只是在优化可维护性。

select
    *
from
    gizmo_details
where
    _gizmo_name in ('foo', 'bar', 'baz', 'bletch')
    or gizmo_id in
    (select id from gizmos where
        gizmo_name in ('foo', 'bar', 'baz', 'bletch'));
sql postgresql repeat dry maintainability
1个回答
0
投票

您可以将其移至单行子查询中的数组文字并重新使用其名称:demo

select * from gizmo_details 
cross join (values ('{foo,bar,baz,bletch}'::text[]))_(string_arr)
where _gizmo_name=any(string_arr) 
  or gizmo_id in(select id from gizmos where gizmo_name=any(string_arr));
© www.soinside.com 2019 - 2024. All rights reserved.