我编写了一个查询来检查符合特定条件的用户,其中一个条件是他们有电子邮件地址。
我们的网站将允许用户拥有或不拥有电子邮件地址。
$aUsers=$this->readToArray('
SELECT `userID`
FROM `users`
WHERE `userID`
IN(SELECT `userID`
FROM `users_indvSettings`
WHERE `indvSettingID`=5 AND `optionID`='.$time.')
AND `email`!=""
');
这是在SQL中检查空字段的最佳方法吗?我刚刚尝试了“IS NOT NULL”,但仍然返回了一个没有电子邮件地址的用户记录。
上面的查询是有效的,但是出于好奇,我想知道我的方法是否正确。
8条答案
按热度按时间oewdyzsn1#
空字段可以是空字符串或
NULL
。要同时处理这两个问题,请用途:
如果您的表中有很多空的email记录(两种类型),那么它可以从
range
访问中受益。fwzugrvs2#
是的,您所做的是正确的。您正在检查以确保email字段不是空字符串。NULL表示数据丢失。空字符串
""
是长度为0的空字符串。您还可以添加空值检查
brccelvz3#
你可以用
fkvaft9z4#
空字符串(email!=“”)和NULL是有区别的。NULL是空的,而空字符串是有意义的。
vulvrdjw5#
这是可行的,但仍有可能返回一个空记录。虽然您可能在插入记录时将电子邮件地址设置为长度为零的字符串,但您可能仍希望以某种方式处理空电子邮件地址进入系统的情况。
jslywgbw6#
如果你想找到所有不是NULL的记录,或者是空的或者是任意数量的空格,这将是可行的:
确保反斜杠后面有一个空格。更多信息请访问:http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
aemubtdh7#
查询将返回MyCol为空或为任意长度空格的行
有关详细信息,请参见TRIMCOALESCE和IS NULL。
还有MySQL文档中的Working with null值
bpzcxfmw8#
检查此代码是否有问题: