当我在where条件下运行一个只有字段名的sql查询时,适用于字段名的默认条件是什么?
Select * from tablename where fieldname;
eeq64g8w1#
我在sql编辑器上尝试过:没有语法错误为了重新验证,我使用了sql语法检查器来获得以下结果如果您尝试从城市不为空的客户中选择*;很显然,您将得到如下所有非空记录。
ibrsph3r2#
如果你跑了
它将作为
SELECT * FROM `tablename` WHERE fieldname IS NOT NULL
并返回非空/空数据如果在phpmyadmin列中运行此操作,则指定的列将突出显示,并且数据不包含空集
oyxsuwqo3#
这个 WHERE 子句包含布尔表达式。像这样的 a = b and c = d 例如。如果你有 where fieldname 那么 fieldname 只有布尔表达式。所以呢 fieldname 通常是一个布尔列,如
WHERE
a = b and c = d
where fieldname
fieldname
select * from client where is_active;
如果不是布尔列,mysql将尝试转换:数字将首先被截断为整数。那么零被认为是假的,所有其他数字都被认为是真的。字符串将首先转换为数字,mysql从左到右读取(例如。 '012.3AB' 转换为 12.3 ). 然后数字将被转换为布尔值,如上所述。日期将转换为数字(例如。 date '1999-02-03' 变成 19990203 ). 然后数字将被转换为布尔值,如上所述。(然而,我不知道这些转换是否能保证如此应用。这只是我观察到的。)一般来说,使用它没有多大意义 where fieldname 使用非布尔值 fieldname . mysql的静默转换非常容易出错;很容易忘记比较的正确部分而不去注意。在我看来,如果mysql提出一个错误会更好。
'012.3AB'
12.3
date '1999-02-03'
19990203
3条答案
按热度按时间eeq64g8w1#
我在sql编辑器上尝试过:
没有语法错误
为了重新验证,我使用了sql语法检查器来获得以下结果
如果您尝试从城市不为空的客户中选择*;
很显然,您将得到如下所有非空记录。
ibrsph3r2#
如果你跑了
它将作为
并返回非空/空数据
如果在phpmyadmin列中运行此操作,则指定的列将突出显示,并且数据不包含空集
oyxsuwqo3#
这个
WHERE
子句包含布尔表达式。像这样的a = b and c = d
例如。如果你有where fieldname
那么fieldname
只有布尔表达式。所以呢fieldname
通常是一个布尔列,如如果不是布尔列,mysql将尝试转换:
数字将首先被截断为整数。那么零被认为是假的,所有其他数字都被认为是真的。
字符串将首先转换为数字,mysql从左到右读取(例如。
'012.3AB'
转换为12.3
). 然后数字将被转换为布尔值,如上所述。日期将转换为数字(例如。
date '1999-02-03'
变成19990203
). 然后数字将被转换为布尔值,如上所述。(然而,我不知道这些转换是否能保证如此应用。这只是我观察到的。)
一般来说,使用它没有多大意义
where fieldname
使用非布尔值fieldname
. mysql的静默转换非常容易出错;很容易忘记比较的正确部分而不去注意。在我看来,如果mysql提出一个错误会更好。