Zend搜索序列号(字符串不是整数)

时间:2014-02-25 20:56:15

标签: php mysql zend-framework

我目前正在使用一些搜索功能,只要它们是整数,我就可以搜索序列号。

例如,这样可以正常工作。

搜索连续出版物> = 352123和< = 360000

当序列号可以包含字符串时,进行类似搜索的最佳方法是什么?

例如:

  

='352123 / 230w'和< ='352123 / 250w'

我将我的表设置为MyISAM以利用全文搜索,希望在这种情况下这有用吗?

1 个答案:

答案 0 :(得分:1)

可以进行这样的字符串比较,但你必须知道它正在使用词法值。例如:

SELECT '352123/230w' <= '352123/250w';
-- returns 1

SELECT '352123/230w' <= '4';
-- also returns 1

假设您的所有序列号都是这样格式化的,您可以使用字符串操作来拆分数字,转换为整数,并根据这些操作进行排序,但是你们都会引入大量的转换开销以及抛出离开你的索引,所以它会非常慢/效率低。

您可以随时添加另一个或两个字段来存储数字等效项,即。 '352123 / 230w'剥离了非数字字符到352123230并使用它进行排序,但这实际上取决于所有跟踪序列号的格式是否一致。