我有一个 sql 查询:
SELECT * FROM presentations_db.presenters_tbl WHERE e-mail LIKE '%@%';
它似乎不起作用,我不知道为什么。如果我删除 WHERE 部分它可以工作,但包括所有记录。我只想要有电子邮件地址的记录。我正在使用 mysql 工作台。电子邮件字段是 VARCHAR(45)。看起来很简单,但不是……没有反馈或错误消息。结果列表甚至没有打开。
我有一个 sql 查询:
SELECT * FROM presentations_db.presenters_tbl WHERE e-mail LIKE '%@%';
它似乎不起作用,我不知道为什么。如果我删除 WHERE 部分它可以工作,但包括所有记录。我只想要有电子邮件地址的记录。我正在使用 mysql 工作台。电子邮件字段是 VARCHAR(45)。看起来很简单,但不是……没有反馈或错误消息。结果列表甚至没有打开。
您必须用反引号将列名括起来以避免语法错误。
SELECT * FROM presentations_db.presenters_tbl WHERE `e-mail` LIKE '%@%
如果您不使用反引号将其包装起来,它将执行算术运算:
从e中减去邮件
导致您收到此错误消息:Unknown column 'e' in 'where clause'
你的查询是对的,只需替换这个
e-mail
这样
`e-mail`
除了带有反引号或双引号的必需引用(如果启用了 ANSI 引用),我将更改 where 子句:
SELECT * FROM presentations_db.presenters_tbl WHERE `e-mail` IS NOT NULL;
因为您想要的只是具有电子邮件集的记录。但是,它不检查地址的有效性。