Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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
Sql 奇怪的查询结果_Sql_Phpmyadmin_Xampp - Fatal编程技术网

Sql 奇怪的查询结果

Sql 奇怪的查询结果,sql,phpmyadmin,xampp,Sql,Phpmyadmin,Xampp,我有个问题。我在某处发现了这样的问题: SELECT name, surname FROM person WHERE name LIKE '[b-g]%' SELECT name, surname FROM person WHERE name LIKE '[bcd]%' SELECT name, surname FROM person WHERE name LIKE '[^b-g]%' 我自己试过: select name from person where name like '%[^gkl

我有个问题。我在某处发现了这样的问题:

SELECT name, surname FROM person WHERE name LIKE '[b-g]%'
SELECT name, surname FROM person WHERE name LIKE '[bcd]%'
SELECT name, surname FROM person WHERE name LIKE '[^b-g]%'
我自己试过:

select name from person where name like '%[^gkl]%'
select * from person where surname like '%[r-z]%'
我试着用逗号分隔字符

select * from person where surname not like "%[n,j,e,a]%" and name not like "P%"
但我得到的只是空表或TablePerson提供的所有记录,就像没有条件一样。我从XAMPP通过phpmyadmin实现了这一点,并将查询粘贴到控制台(同样来自XAMPP),但仍然没有得到任何预期的结果。所以我很好奇这是否真的不起作用,或者我在查询中犯了错误。感谢您提供任何有用的链接或解释“为什么它会这样工作?”。如果有什么不清楚的地方,我一起床就会设法解决。 表如下所示:

create table person (ID int not null auto_increment, surname varchar(100) 
collate utf8_general_ci, name varchar(100) collate utf8_general_ci, primary 
key(ID)) engine = innodb character set utf8 collate utf8_general_ci;

在标准SQL中,
like
的通配符正好是:

  • %
    表示任意数量的字符
  • \
    仅表示一个字符
就这样。根据您的问题,您可能认为SQL
like
支持字符范围和其他类似正则表达式的模式。但事实并非如此

您可能会感到困惑,因为SQL Server恰好支持字符范围。您没有使用SQL Server(由自动增量提供)。MySQL支持正则表达式,因此您可以:

WHERE name REGEXP '^[b-g]'

网络上有很多学习正则表达式的资源。

我同意Gordon ans@daniel1490的观点。请检查此链接并使用不同的条件