sql - 查询不读取存储在表中的引用字符串值
问题描述
我将一些引用的值存储在一个单独的表中,并基于此表中的值。我正在尝试通过在子查询中使用此表中的值来过滤另一个表中的行。但它没有读取子查询的值并在输出中返回一个空白表。
该值在列中override
并解析为 'HCC11','HCC12'
。
当我只是从列中复制值并将其粘贴到子查询的位置时,它正在正确地获取数据。我无法理解这里的问题。我已经尝试在trim()
这里使用该功能,但仍然无法正常工作
注意-:我附上了图片供您参考:
select *
from table1
where column1 in (select override from table 2 )
解决方案
将逗号分隔的值存储在单个列中是一个非常糟糕的数据库,首先将它们括在引号中会使事情变得更糟。解决问题的正确方法是更好的设计。
但是,如果您被迫使用这种糟糕的设计,您可以使用将它们转换为正确的值列表
select *
from table1
where column1 in (select trim(both '''' from w.word)
from table2 t2
cross join unnest(string_to_array(t2.override, ',')) as w(word)
这假设table1.column1
只包含一个没有任何引号的值,并且覆盖值从不包含实际值中的逗号(例如,上面的值会中断类似 的值'A,B', 'C'
)
推荐阅读
- azure - 在 Azure 门户中哪里可以找到自定义指标
- java - BCryptPasswordEncoder 适用于超过 72 个字节,如何?
- c - 在C中搜索二叉树中的节点
- directus - docker中的Directus无法连接到docker中的mysql数据库
- javascript - 如何在Angular中圆chartjs栏角?
- rust - 如果 `L` 或 `R` 实现它,则为元组 `(L, R)` 实现标记特征
- datagridview - 再次:datagridview 不更新 observablecollection 更改
- python - 如何应用特征匹配方法来增强立体视差图结果
- flutter - 在 Flutter 中制作“事件动画”的正确方法是什么?
- gcc - 使用英特尔核心 2 双核处理器在旧 MBP 上从源代码构建 gcc