我有 2 张 table
- 组
- 用户
组表有
- 身份证
- 年龄(这是范围。23,40)是指 23 至 40
- 性别
用户表有
- 身份证
- 年龄
- 性别
我想检查用户的年龄对于他的性别组是否有效 我现在写了这个查询
Select user.id, group.id as 'GroupID', Replace(group.age, ',', ' and '),
if (user.age between Replace(group.age, ',', ' and '), 'Valid', 'Invalid')
from user inner join group on group.gender = user.gender
这会在 if (user.age Between , Replace(group.age, ',', ' and '), 'Valid', 'Invalid') 子句上生成查询错误
但是如果我将其运行为
Select user.id, group.id as 'GroupID', Replace(group.age, ',', ' and ')
from user inner join group on group.gender = user.gender
这运行良好并产生类似 1 | 1 | 20 和 40
为什么这个替换在子句之间不起作用 还有其他方法可以检查值是否在逗号分隔的列值之间吗?
最佳答案
select
user.id,
group.id as 'GroupID',
replace(group.age, ',', ' and '),
if (user.age >= CAST(SUBSTRING(group.age, 1, 2) AS UNSIGNED) and user.age <= CAST(SUBSTRING(group.age, 4, 2) AS UNSIGNED), 'Valid', 'Invalid')
from user
inner join group
on group.gender = user.gender
关于MySQL 之间通过使用替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49602659/