Rin*_*nku -1 php mysql sql qsqlquery
SQL where子句在我的数据库中不起作用.
我有一个名为"网站"的表和类似的结构
id site
1 xyz.com
2 google.com
3 example.com
Run Code Online (Sandbox Code Playgroud)
我正在运行此SQL查询
SELECT * FROM `sites` WHERE `site` = "google.com";
Run Code Online (Sandbox Code Playgroud)
但我得到了这个输出
MySQL returned an empty result set (i.e. zero rows). (Query took 0.0009 sec)
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这样的生活.
更新:截图
我不想在项目中应用此查询.
SELECT * FROM `sites` WHERE `site` LIKE "%google.com%";
Run Code Online (Sandbox Code Playgroud)

#
Run Code Online (Sandbox Code Playgroud)

真正的问题在于insert创建DB的命令.尝试
INSERT INTO sites (id, site) VALUES (1, '\nxyz.com\n'), (2, '\ngoogle.com\n'), (3, '\nexample.com\n')
Run Code Online (Sandbox Code Playgroud)
并手动检查表中的记录.你不会看到换行符.这是我注意到的SQL中的一个问题.
更新:OP在他的数据集中有不可见的换行符(\n).@EternalPoster(和我)认为Trim将删除所有空格,但MySql Trim Documentation 仅指定前导和尾随空格.
这就是我做的:
-- for http://stackoverflow.com/questions/27203169/sql-query-not-work-for-google-com
-- and http://stackoverflow.com/questions/27202157/sql-where-clause-not-working
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
-- --------------------------------------------------------
DROP TABLE IF EXISTS `sites`;
--
-- structure for table `sites`
--
CREATE TABLE IF NOT EXISTS `sites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`site` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- data for table `sites`
--
INSERT INTO `sites` (`id`, `site`) VALUES
(1, 'xyz.com'),
(2, 'google.com'),
(3, 'example.com');
--
-- select google
--
SELECT *
FROM sites
WHERE site = 'google.com'
;
--
-- select google
--
SELECT *
FROM sites
WHERE site = 'google.com'
;
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:

所以在我的情况下,我看到脚本按预期运行.
你的案子有什么不同?我的安装是一个相当默认的设置.Like '%google.com%'适用于您的数据集的事实表明了一些事情.人们已经建议过TRIM,因为Like表达式会匹配不可见的字符(空格,制表符,退格键,空值).MySQL有一个单独的运算符REGEXP用于正则表达式,所以它似乎不是该.字符被用作通配符,但这可能值得一看.
创建一个空数据库并尝试运行上面的脚本.你得到了同样的结果吗?