将正则表达式用作数据库字段

时间:2015-09-30 16:01:31

标签: sql regex postgresql

我一直在尝试一些非常重要的事情,并希望你对此有所了解。

我使用Postgres数据库使用4位数代码存储一些产品信息,主要是他们的家人。 比方说,产品A可以有1000,1001和1002,而产品B有1003和1004。

我想用代码检索这个家庭。

我可以做两张桌子,一张带有姓氏,钥匙和其他信息,另一张带有所有代码,还有一个指向家庭的链接。然后,请求如下:

select familyname 
from family, familycode 
where family.pk = familycode.fk_family AND familycode = '1000' 

会做到这一点 但是,由于我非常贪婪,我想知道是否有可能使用正则表达式并使用主键,标签和正则表达式来表示代码。

按照前面的例子,我会有类似的东西:

'pk' 'productA' '100[0-2]{1}'

'pk' 'productB' '100[3-4]{1}'

然而,它能真正发挥作用并让我回到我的产品A"只需一个请求即可进入' 1000'作为代码?

感谢您的关注和答案

祝你好运

编辑:

我添加了工作流程的示例 我有一个参考表系列,包含id,标签和代码。

'pk' 'productA' 'code1'

'pk' 'productB' 'code2'

根据家庭的不同,我的软软会因此而行动。如果我有产品A,我将在另一个参考表中检索链接到该产品的操作

让我们说下面的主张是

从table_operation中选择操作,其中productref =' productA'

要获得手术,我需要家庭。为了得到家庭,我只有代码。

由于单个族有很多不同的代码,我想在表中使用正则表达式。那就是

1 个答案:

答案 0 :(得分:0)

我不知道你为什么要这么复杂。

在单个表格中,您可以有两个字段

 SELECT family, familyCode
 FROM Your Table
 WHERE family = 100 and familyCode in (0,1,2)

你可以对一个字段和一个正则表达式做同样的事情,但你必须要小心,因为postgres只能为左锚定表达式使用简单索引值LIKE '00%'(对于大表很重要)。

此外,您设计的问题是,如果您以后想要在库存中添加另一个产品A,则您会遇到刚性模型。这就是为什么你的第一个带有两个分离表的解决方案要好得多。