用regexp进行mysql查询

时间:2013-11-27 13:54:27

标签: mysql regex

我有一个像这样的MySQL表

restaurant_id   restaurant_name     restaurant_serving_cuisines
1               Vasantha Bhavan     4,5,6
3               Little India        7,5,6
5               Mohan Restaurants   16,2,4,1,5,3,6
6               Sri Restaurant      34,16,21,2,23,38,30,7,25,9
13              The Taco Shop       5
22              KFC                 15
37              belargio            14,15,16,2,7,4,1,5,17,12,3,13,6
56              Pizza Hot           5

我需要在5&amp ;; 15。 我需要把餐厅当作belargio。

我正在撰写查询

SELECT restaurant_id, restaurant_name,restaurant_serving_cuisines 
FROM `rt_restaurant`
WHERE restaurant_serving_cuisines REGEXP concat_ws("|",    "5",    "15");

但我无法得到确切的结果。

2 个答案:

答案 0 :(得分:1)

如何使用FIND_IN_SET

SELECT restaurant_id, restaurant_name,restaurant_serving_cuisines 
FROM `rt_restaurant` 
WHERE find_in_set(5, restaurant_serving_cuisines) > 0
and find_in_set(15, restaurant_serving_cuisines) > 0

答案 1 :(得分:0)

FIND_IN_SET很好,但太具体了。

这适用于任何DBMS:

SELECT restaurant_id, restaurant_name, restaurant_serving_cuisines 
FROM `rt_restaurant` 
WHERE ',' + restaurant_serving_cuisines + ',' LIKE '%,5,%'
  AND ',' + restaurant_serving_cuisines + ',' LIKE '%,15,%'

无论如何,您应该检查您的数据模型,如已建议的那样:
restaurant_serving_cuisines应该转到单独的表格