MySQL 之间使用替换
MySQL Between by using replace
我有 2 table
- 组
- 用户
组 table 有
- ID
- 年龄(这是范围。23,40)表示 23 到 40
- 性别
用户 table 有
- ID
- 年龄
- 性别
我想检查用户的年龄是否适用于他的性别组
我现在写了这个查询
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
为什么这个替换在 between 子句中不起作用
有没有其他方法可以检查值是否在逗号分隔的列值之间?
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
我有 2 table
- 组
- 用户
组 table 有
- ID
- 年龄(这是范围。23,40)表示 23 到 40
- 性别
用户 table 有
- ID
- 年龄
- 性别
我想检查用户的年龄是否适用于他的性别组 我现在写了这个查询
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
为什么这个替换在 between 子句中不起作用 有没有其他方法可以检查值是否在逗号分隔的列值之间?
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