我需要在名为“properties”的MySQL数据库列之一中保存一个字符串,该字符串代表CPU属性的7个元素元组,例如:
元组:TotalRam、NumOfcores、OsImage、IsHyperThreaded
实际字符串:200,3,LinuxSET EC Image SLES11SP4-4 Revision 0 ia32e,true
比我需要能够执行如下查询:返回所有行 - NumOfCores==2 && isHyperThread==true
我正在 Spring Boot 上下文中使用 curdrepository 。数据库是 MySql,但版本没有 JSON 数据类型。
保存和查询这种元组/字符串的最佳方法是什么?
谢谢
最佳答案
您必须拆分字符串。以下是您的 4 个参数的示例
-- TotalRam
SELECT SUBSTRING_INDEX('200,3,LinuxSET EC Image SLES11SP4-4 Revision 0 ia32e,true',',',1);
-- NumOfcores
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('200,3,LinuxSET EC Image SLES11SP4-4 Revision 0 ia32e,true',',',2),',',-1);
-- OsImage
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('200,3,LinuxSET EC Image SLES11SP4-4 Revision 0 ia32e,true',',',3),',',-1);
-- IsHyperThreaded
SELECT SUBSTRING_INDEX('200,3,LinuxSET EC Image SLES11SP4-4 Revision 0 ia32e,true',',',-1);
所以你的查询是这样的:
SELECT *
FROM yourTable
WHERE
SUBSTRING_INDEX(SUBSTRING_INDEX(properties,',',2),',',-1) = 2
AND
SUBSTRING_INDEX(properties,',',-1) = 'true';
您还可以使用虚拟场。我将在几分钟内添加一个示例。
关于mysql - 在 MySQL 中搜索像字符串列这样的元组内的键值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108277/