0

我需要帮助尝试从表中获取一些数据。假设我有表 INSURANCE,其中包含如下列:

ID     NAME     NUMBER    OLD_NUMBER
1      STEVE     55        11,22,44
2      JOHN      77        33,66,77
3      PETER     99        88,99

我需要比较 NUMBER 列和 OLD_NUMBER 列(在 OLD_NUMBER 列中,结果以逗号分隔),并且仅在这些列中的数据具有匹配的数字时才显示信息。

4

2 回答 2

1

除了它不是最好的设计并且给您和您的数据库引擎带来很多麻烦之外,这是您可以做到这一点的一种方法:

select *
from insurance
where 
 concat(',',OLD_NUMBER,',') like concat('%,',NUMBER,',%')
于 2021-04-14T16:25:57.160 回答
1

这是一个可怕的数据模型,您应该修复它。但是,如果您被别人的非常非常糟糕的决定所困扰,您可以做您想做的事。

在标准 SQL 中,您可以like像这样使用字符串连接:

where ',' || old_number || ',' like '%,' || number || ',%'

确切的语法可能取决于您使用的数据库 - for 而concat()不是||.

于 2021-04-14T16:26:17.253 回答