WHERE语句中的REGEXP?

时间:2009-10-26 18:42:10

标签: mysql sql regex

我有一个名为'user_car'字段的表。它由cat'd下划线分隔值(用户的id _ car id)

组成
user_car          rating
-----------------------------
11_56748           4
13_23939           2
1_56748            1
2001_56748         5
163_23939          1

我需要获得任何“汽车”的平均评分。在我的示例表中,只列出了2辆车:56748和23939.所以说我想得到汽车的平均评级:56748,到目前为止我有这个SQL,但我需要正确的正则表达式。如果我完全偏离基地,请告诉我。谢谢!

$sql = "
    SELECT AVG 'rating' FROM 'car_ratings'
    WHERE 'user_car' REGEXP ''; 
";

2 个答案:

答案 0 :(得分:5)

您可以使用以下方式提取车辆ID:

substring(user_car from (locate('_', user_car) + 1))

这将允许你这样做:

select   substring(user_car from (locate('_', user_car) + 1)) as car_id,
         avg(rating)
from     car_ratings
group by car_id

但是,这是一个坏主意。将user_car拆分为user_idcar_id会更好。

答案 1 :(得分:3)

我不明白为什么你需要使用REGEX ...

SELECT AVG(`rating`) FROM `car_ratings` WHERE `user_car` LIKE '%_56748'

正则表达速度很慢,很容易在脚下射击你。我学会了尽可能避免在MySQL中使用它们。