我正忙着为我的客户建立一个目录网站,需要稍微调整一下搜索。
目录包含大量产品。每个产品都能够包含单个,多个和一个间隔的项目数。为了澄清这一点,我在下面列举了几个例子。
示例1) 多个项目数
itemnumber = 100,105,109,200
示例2) 项目编号的间隔
itemnumber = 100 - 110
示例3) 组合
itemnumber = 100 - 110,220,300 - 310,400,401
我的问题是:
是否有一种语法允许我检查两者之间的间隔 用' - '分隔的数字?
如果是,有关如何构建允许我的查询的任何建议 实施。
如果否,您会推荐任何指示?
其他信息
该网站是在WordPress中构建的 - 其中itemnumber是一个自定义元字段。 Atm我已经加入pre_posts
并添加: - 也粘贴在pastebin中以便于阅读pastebin
$where .= " OR ID IN ( SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value LIKE '%" . $wp_query->query_vars['s'] . "%' AND ( {$wpdb->posts}.ID=post_id AND {$wpdb->posts}.post_status!='inherit' AND ( {$wpdb->posts}.post_type='produkt' ) ) )";
上面的代码只是检查产品元字段是否包含搜索到的单词,不够具体。
答案 0 :(得分:1)
将“ - ”替换为“AND”并使用BETWEEN关键字获取记录:
其中Column_Name介于100和110之间
答案 1 :(得分:0)
在故意非规范化数据库上使用关系逻辑是不可能的,比如邪恶的“Wordpress自定义元字段”方法。
因此,您可以做的最好的事情是执行2次查询:
作为一项好处,您可以更快地执行
答案 2 :(得分:-1)
您应该使用CREATE FUNCTION / CREATE PROCEDURE创建自己的函数来构建查询
创建程序文档:
http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
字符串函数docs:
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html