将字符串中的第一个字符匹配为数字或非标准字符

时间:2011-01-21 16:58:02

标签: mysql database

我需要允许用户通过标题中的第一个字母浏览一个包含> 100万条目的表格。

我希望他们能够通过A-Z中的每个字母,列表中的0-9以及所有其他字符一起浏览。

由于它是一个大型数据库并且要在网站上显示,我需要它才能高效。正则表达式不使用索引,因此速度太慢。

这可能还是我必须重新考虑设计?

提前致谢

2 个答案:

答案 0 :(得分:1)

只要“标题”上有索引,您就应该能够使用类似SQL的索引

select * 
from myTable 
where Title like 'A%'
(或'B%','C%'......)

答案 1 :(得分:0)

创建代表每个字母和数字的链接。单击这些链接将为用户提供以所选字符开头的数据库结果。

SELECT title FROM table
WHERE LEFT(title,1) = ?Char
ORDER BY title ASC;

考虑将这些结果页面分页到适当的块中。 MySQL将允许您使用LIMIT

执行此操作

此命令将从所需的字符组中选择前100条记录:

SELECT title FROM table
WHERE LEFT(title,1) = ?Char
ORDER BY title ASC
LIMIT 0, 100;

此命令将从所需的字符组中选择第二个100条记录:

SELECT title FROM table
WHERE LEFT(title,1) = ?Char
ORDER BY title ASC
LIMIT 100, 100;

根据您的评论,如果您想使用正则表达式组合字符0-9 而不使用,则需要合并多个OR语句:

SELECT title FROM table
WHERE (
    LEFT(title,1) = '0'
    OR LEFT(title,1) = '1'
    ...
    )
ORDER BY title ASC;