使用LIKE和CONCAT

时间:2013-10-29 07:37:48

标签: mysql sql

我可以和CONCAT一样使用吗?我找不到任何其他说法。我正在尝试以下内容并给出错误:

SELECT *, (select count(*) from acts where bookingType like '%CONCAT(bookingTypes_id, ',')%') as how_many FROM bookingTypes order by bookingType

注意:我使用逗号CONCAT,因为bookingType字段基本上是以逗号分隔的数字列表,例如40,14,45 - 我不能只搜索例如4,因为它会显示何时不应该 - 是否有更好的方法在该字段内进行搜索?

2 个答案:

答案 0 :(得分:3)

通常最好不要在字段中存储逗号分隔值,但可以这样使用CONCAT:

SELECT
  *,
  (SELECT COUNT(*)
   FROM   acts
   WHERE  CONCAT(',', bookingType, ',')
          LIKE CONCAT('%,', bookingTypes_id, ',%')) AS how_many
FROM bookingTypes
ORDER BY bookingType

或者您可以使用FIND_IN_SET:

SELECT
  *,
  (SELECT COUNT(*)
   FROM   acts
   WHERE  FIND_IN_SET(bookingTypes_id, bookingType)>0) AS how_many
FROM bookingTypes
ORDER BY bookingType

答案 1 :(得分:2)

试试这个: -

SELECT *
FROM acts
WHERE bookingTypes LIKE CONCAT('%', 
(SELECT bookingTypes FROM bookingTypes order by bookingType LIMIT 1), '%');