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
的通配符正好是:
表示任意数量的字符%
仅表示一个字符\
like
支持字符范围和其他类似正则表达式的模式。但事实并非如此
您可能会感到困惑,因为SQL Server恰好支持字符范围。您没有使用SQL Server(由自动增量提供)。MySQL支持正则表达式,因此您可以:
WHERE name REGEXP '^[b-g]'
网络上有很多学习正则表达式的资源。我同意Gordon ans@daniel1490的观点。请检查此链接并使用不同的条件