Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取介于(包括)A和D之间的结果_Php_Mysql - Fatal编程技术网

Php 获取介于(包括)A和D之间的结果

Php 获取介于(包括)A和D之间的结果,php,mysql,Php,Mysql,我正在试图弄清楚如何执行mysql查询,其中我返回以(例如)a-D开头的结果,aka将返回: -畜生 -银行 -可乐 -狗 但不是:冰屋 看起来很简单,但却找不出一个有效的方法 我的意思是我可以根据一个字母得到它: SELECT * FROM table WHERE word LIKE 'A%' 但是,我如何能够轻松地处理多个字母呢。我考虑过一个循环,将字母从a递增到D,但这对字母没有多大意义。想法?一个普通人工作很好,可以使用索引 Select * from table where word

我正在试图弄清楚如何执行mysql查询,其中我返回以(例如)a-D开头的结果,aka将返回: -畜生 -银行 -可乐 -狗 但不是:冰屋

看起来很简单,但却找不出一个有效的方法

我的意思是我可以根据一个字母得到它:

SELECT * FROM table WHERE word LIKE 'A%'
但是,我如何能够轻松地处理多个字母呢。我考虑过一个循环,将字母从a递增到D,但这对字母没有多大意义。想法?

一个普通人工作很好,可以使用索引

Select * from table where word between 'a' and 'e' and word != 'e';
所有以“a”开头的单词都应该大于“a”,所有以“d”开头的单词都应该小于“e”

下面是一个示例,说明它在概念上是有效的,并且与regexp替代方案进行了比较。查看执行计划,了解索引是如何使用的。

一个普通人工作得很好,可以使用索引

Select * from table where word between 'a' and 'e' and word != 'e';
SELECT *
FROM table
WHERE word REGEXP '^[A-D]';
所有以“a”开头的单词都应该大于“a”,所有以“d”开头的单词都应该小于“e”


下面是一个示例,说明它在概念上是有效的,并且与regexp替代方案进行了比较。查看执行计划以了解索引是如何使用的。

您是否尝试了
REGEXP
$letter='a';而($letter!='E'){echo$letter++;}
foreach(范围('A','D')作为$letter){echo$letter;}
两者都很有意义;但是在SQL中使用regexp是一个更好的解决方案。您是否尝试过
regexp
$letter='a';而($letter!='E'){echo$letter++;}
foreach(范围('A','D')作为$letter){echo$letter;}
两者都很有意义;但是在SQL中使用regexp是一个更好的解决方案。没有任何类似的运算符?这不符合建议,经过几次手动测试后,它似乎排除了应该由序列的最后一个字符捕获的条目(在本例中为“e”)“e”超出范围(a-d),因此不应包括以“e”开头的词。哇。没有任何类似的运算符?这不符合建议,经过几次手动测试后,它似乎排除了应该由序列的最后一个字符捕获的条目(在本例中,“e”)“e”超出范围(a-d)所以不应该包括以“e”开头的单词。我不认为这可以使用任何索引,使大型数据集的速度变慢。@AndreasWederbrand这是真的,最快的选择可能是添加一列,其中只包含世界上第一个字母的小写或大写符号,并在插入/更新记录时填充它。我认为它可以使用索引,因为它访问的是单词的开头。我不认为这可以使用任何索引,这会使大数据的速度变慢设置。@AndreasWederbrand没错,最快的选择可能是添加一列,其中只包含小写或大写表示法中世界的第一个字母,并在插入/更新记录时填充。我认为它可以使用索引,因为它正在访问单词的开头。
SELECT *
FROM table
WHERE word REGEXP '^[A-D]';