MYSQL在字符串中找到INT

时间:2013-05-03 14:25:48

标签: mysql sql

我有一个MEDIUMTEXT列,它包含来自goup_concat的值,形式为INT,INT,INT。我们可以称之为Concatenated_IDs

字符串的长度可以是1 int或更多。

我需要将其分解为原始值以某种方式能够执行诸如

之类的操作
SELECT
  table_country.name
FROM
  table_country 
WHERE
  table_country.country_id IN (
   SELECT
     Concatenated_IDs
   FROM
     table_targeted_countries 
   WHERE
     table_targeted_countries.email LIKE "%gmail.com")

并获取用户使用gmail地址目标注册的国家/地区名称。

我已经考虑将中间文本扩展为INT,为每个int创建一行,有点像反向concat,但我猜它需要一个大的过程

编辑:重新制定的问题名称

1 个答案:

答案 0 :(得分:4)

您应该规范化该表,因此这些连接的ID存储在一个单独的表中,每个记录一个id。但与此同时,您可以使用mysql的find_in_set()函数:

SELECT ...
WHERE FIND_IN_SET(table_country.country_id, Concatenated_IDs) > 0

相关文档:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set