我正在尝试在我的数据库中搜索大小。有些是用于以下格式的服装项目:
小 - 黑色 小 - 红色
或
小 介质 大 XL
我的查询搜索大小的部分是LIKE '".$size."%'
$ size是Small,Medium,Large还是XL。这一切都运作良好。但是我还需要按鞋码搜索。问题是如果我搜索大小10,它将返回大小10和大小10.5的结果。
我以为我可以在查询之前做一个if语句,看看$ size是一个数字,然后对字符串和数字有不同的查询,但我正在寻找一种更简洁的方法来做到这一点。有什么建议?谢谢!
答案 0 :(得分:1)
尝试以下where子句
size LIKE '".$size."%' AND size NOT LIKE '".$size.".5%'
答案 1 :(得分:0)
用enum
替换列尺寸定义(S,M,L,XL,XXL,XXXL,5,5.5,6,6.5,7 ....)绝对适合 65,535元素
答案 2 :(得分:0)
从它的外观来看,你可以使用“=”而不是像?如果你那么你会得到你的XL,中等或'10'命中,不是吗?为什么不使用='".$size."'
答案 3 :(得分:0)
我认为这里的答案都归结为一件事:你有一个充满随机数据的字段。
真正的答案是想出一种正式化数据输入的方法,这样你就可以统一。有很多方法可以做到这一点,但是您可能希望枚举一个字段,如ajreal所提到的“普通语言”样式大小(以及此列表的CONSTRAIN数据条目),以及数字大小的字段,可能还有控制字段指出哪一个用于记录。这个例子可能不是一个好方法,但你需要统一数据以使搜索有效地工作。
快捷方式可能是通过说“喜欢'foo'或类似'10 .5'”来缩小尺寸,这将返回记录的子集,然后在显示时迭代并消除特殊案例项。这是一个坏主意黑客。