gpt4 book ai didi

mysql - 对 MySQL 查询中匹配的 LIKE 语句的数量求和

转载 作者:行者123 更新时间:2023-11-30 01:21:31 26 4
gpt4 key购买 nike

我有一个以下格式的 MySQL 查询:

SELECT * 
FROM `table`
WHERE `val1` IN (x,y,z)
AND (
`val2` LIKE '%a%' OR
`val2` LIKE '%b%' OR
`val2` LIKE '%c%' OR
...
`val2` LIKE '%x%'
)

我想要做的就是将这些 LIKE 语句匹配的次数相加。例如,如果它找到 a、e 和 y 的匹配项,则总数将为 3,然后我可以使用 ORDER BY 按“命中”最多的行进行搜索。

编辑:我错过了在查询中使用 % 作为 & 作为通配符。

最佳答案

您可以在 MySQL 中将它们添加在一起:

SELECT *,
((`val2` LIKE '&a&') +
(`val2` LIKE '&b&') +
(`val2` LIKE '&c&') +
...
) as nummatches
FROM `table`
WHERE `val1` IN (x,y,z)
AND (
`val2` LIKE '&a&' OR
`val2` LIKE '&b&' OR
`val2` LIKE '&c&' OR
...
`val2` LIKE '&x&'
)

事实上,您可以将查询简化为:

SELECT *,
((`val2` LIKE '&a&') +
( `val2` LIKE '&b&') +
(`val2` LIKE '&c&') +
...
) as nummatches
FROM `table`
WHERE `val1` IN (x,y,z)
having nummatches > 0;

关于mysql - 对 MySQL 查询中匹配的 LIKE 语句的数量求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18476108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com