我目前正在使用一些搜索功能,只要它们是整数,我就可以搜索序列号。
例如,这样可以正常工作。
搜索连续出版物> = 352123和< = 360000
当序列号可以包含字符串时,进行类似搜索的最佳方法是什么?
例如:
='352123 / 230w'和< ='352123 / 250w'
我将我的表设置为MyISAM以利用全文搜索,希望在这种情况下这有用吗?
答案 0 :(得分:1)
你可以进行这样的字符串比较,但你必须知道它正在使用词法值。例如:
SELECT '352123/230w' <= '352123/250w';
-- returns 1
SELECT '352123/230w' <= '4';
-- also returns 1
假设您的所有序列号都是这样格式化的,您可以使用字符串操作来拆分数字,转换为整数,并根据这些操作进行排序,但是你们都会引入大量的转换开销以及抛出离开你的索引,所以它会非常慢/效率低。
您可以随时添加另一个或两个字段来存储数字等效项,即。 '352123 / 230w'剥离了非数字字符到352123230并使用它进行排序,但这实际上取决于所有跟踪序列号的格式是否一致。