mysql - TRIM mysql 值在外部查询中不解释为字符串

标签 mysql trim

考虑以下查询

select * from games 
where game_id in 
(
  SELECT TRIM(LEADING ',' FROM 
  ( 
    SELECT games FROM `users_games` WHERE `email`=1656366
  ))
)

第一个内部查询

SELECT TRIM(LEADING ',' FROM 
(
  SELECT games FROM `users_games` WHERE `email`=1656366
))` 

返回7497251,7497252,7497255,7497321,7497326,7497339,7497340,7497364,8178978

但总查询仅返回 game_id = 7497251 行的数据。为什么会这样呢?如果我直接将内部 TRIM 查询的结果提供给外部查询,我会得到所需的结果。谁能解释一下为什么吗?

最佳答案

FIND_IN_SET()应该可以。

select * from games 
where find_in_set(game_id, 
(
  SELECT TRIM(LEADING ',' FROM 
  ( 
    SELECT games FROM `users_games` WHERE `email`=1656366
  ))
)) > 0

但正如@fancyPants所说:

切勿在一列中存储多个值!

关于mysql - TRIM mysql 值在外部查询中不解释为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20375146/

相关文章:

mysql - 是否在 Controller Action 后使用after_filter,会缩短为用户生成最终 View 的时间?

postgresql - 如何在 VIEW 上使用 TRIM

css - 如何更改我的代码以避免在 Aptana Studio 中出现警告 "should trim empty <div>"?

php - 如何将多个图像添加到mysql数据库?

PHP MySQL SQL 解析器(插入和更新)

mysql - 使用 group by 每 2 分钟对数据进行一次分组

string - 在SQL Server 2005中的表列上进行修剪

audio - FFmpeg:atrim = a: b 和 aselect = 'between (t, a, b)' 之间的区别

sql-server - 在选择/插入/更新表字段数据时修剪空格(前导和尾随)是一种好习惯吗?

MySQL 's ' secure-file-priv' 不允许加载数据 infile,即使是从分配的安全文件夹