涉及正则表达式的SQL查询

时间:2011-12-05 20:59:58

标签: sql

我有一个数据库配方表,如下所示:

(irrelevant fields skipped)
ingredients VARCHAR(500)
ingNo INT

示例成分字段的格式为:

'pepper :1 \n tomato :2 \n salt :half a spoon'

'egg :1 \n tomato :1 \n potato :5'

'rice :100 gram \n oil :1 spoon' 

现在,我想形成一个select语句,根据给定的成分选择元组,例如,如果我选择'番茄'和'土豆',它应该返回含有大部分成分的食谱(所以从上面的例子中它应该是元组2和1,完全按照那个顺序)。如果有更多具有相同匹配数的元组,则查询应根据匹配数除以ingNo对元组进行排序。如何在SQL中使用它?

2 个答案:

答案 0 :(得分:3)

您需要重新设计数据库。使用两个表。一个是配方。第二个参考配方并包含成分和测量。

recipe
    - irrelevant fields
ingredient
    - recipeID
    - name
    - measurement

答案 1 :(得分:1)

您可以使用UNION查询:

select recipe from sometable where ingredients LIKE '%tomato%'
UNION
select recipe from sometable where ingredients LIKE '%potato%';

然后有一些全文选项对您的数据库引擎是唯一的,您也可以查看。