下面是计算机模型中的hdd列(我知道它不是存储数据的好格式,但它已经像那样存储了)
HDD
4x2TBSATA2
2x2TBSATA2
8x2TBSATA2
4x1TBSATA2
2x120GBSSD
4x480GBSSD
我想从hdd列中提取存储在特定范围内的范围,例如,应该输出120gb到1tb之间的fetch存储
4x1TBSATA2
2x120GBSSD
4x480GBSSD
我想知道是否有可能在同一个语句中合并like和between?
我试过以下方法,但没有效果。
select * from `server_details` where `HDD` between '%120GB%' and '%10TB%'
select * from `server_details` where `HDD` between "Like '%120GB%'" and "LIKE '%10TB%'"
3条答案
按热度按时间polkgigr1#
不能在通配符查询中使用between。您可以编写一个正则表达式来匹配所需内容,例如:
但正如你所看到的,这是一个基于你所写的非常具体的表达式,每个不同的限制将需要一个不同的表达式。
有一些python代码可以生成这样的表达式,但我找不到php代码(通过一些非常基本的google)
另一个解决方案(我个人建议)是将容量添加为一个单独的列:
迁移当前表:
那么您可能需要添加一个
creating
以及updating
事件,以确保始终设置新的capacitymb列。完成所有这些后,您的查询非常简单:0vvn1miw2#
如果只需要在sql中执行,请提取大小部分,将其转换为数字,然后进行比较。
r7knjye23#
在数据库中,在hdd列中,不应存储120gb、10tb等字母数字值,而应存储12010000等数字值。请尝试以下查询。