Mysql nd null或“”视为FALSE 1.SELECT * FROM tableName -- all record return 2.SELECT * FROM tableName WHERE 1 -- Return true value 3.SELECT

Mysql nd null或“”视为FALSE 1.SELECT * FROM tableName -- all record return 2.SELECT * FROM tableName WHERE 1 -- Return true value 3.SELECT,mysql,sql,Mysql,Sql,nd null或“”视为FALSE 1.SELECT * FROM tableName -- all record return 2.SELECT * FROM tableName WHERE 1 -- Return true value 3.SELECT * FROM tableName WHERE 123 -- Return true value 4.SELECT * FROM tableName WHERE '2xyz' -- Return true value because ther

nd null或“”视为FALSE

1.SELECT * FROM tableName -- all record return
2.SELECT * FROM tableName WHERE 1 -- Return true value
3.SELECT * FROM tableName WHERE 123 -- Return true value 
4.SELECT * FROM tableName WHERE '2xyz' -- Return true value because there first character is number

5.SELECT * FROM tableName WHERE '' -- false value return
6.SELECT * FROM tableName WHERE 'xyz' -- false value return 


现在我很好奇,2和3在sql中产生了什么结果?因为与表中的字段没有关系。。。你应该会看到这个错误(在你写的第二行):
一个非布尔类型的表达式,在“1”附近的预期条件的上下文中指定。
我刚刚检查了1,2和3在@Karenaiok生成相同的结果,所以我猜在MySql中是可能的。现在我很好奇,2和3在sql中生成什么结果?因为与表中的字段没有关系。。。你应该会看到这个错误(在你写的第二行):
一个非布尔类型的表达式,在“1”附近的预期条件的上下文中指定。
我刚刚检查了1,2和3是否产生了相同的结果@Karenaiok,所以我想在MySql中这是可能的。你能提供一个关于字符串文字作为布尔表达式的行为的文档参考吗(我不能)?这是一个隐式转换。由于没有比较运算符,因此文字必须表示布尔值。因此,字符串被转换为布尔值,即数字:-),但“2xyz”如何转换为2?mysql引擎是如何实现的?mysql在将字符串转换为数字时使用前导数字。如果没有,则结果为0。@TimBiegeleisen“一网打尽”规则适用:字符串被转换为浮点数(mysql实际上没有布尔数据类型)。您能否提供一个文档参考,说明字符串文字作为布尔表达式的行为(我不能)?这是一个隐式转换。由于没有比较运算符,因此文字必须表示布尔值。因此,字符串被转换为布尔值,即数字:-),但“2xyz”如何转换为2?mysql引擎是如何实现的?mysql在将字符串转换为数字时使用前导数字。如果没有,则结果为0。@TimBiegeleisen“一网打尽”规则适用:字符串被转换为浮点数(mysql实际上没有布尔数据类型)回答正确。也许可以添加一个文档链接,以确保将来的代表积分也达到+1。@TimBiegeleisen它并没有真正的文档记录(至少我找不到任何好的官方描述),添加了我可以添加的内容。回答得好。可能会添加一个文档链接,以确保将来的代表积分也达到+1。@TimBiegeleisen它并没有真正的文档记录(至少我找不到任何好的官方描述),添加了我可以添加的内容。
SELECT * FROM tbl_name WHERE str_col=1;1
SELECT * FROM tableName WHERE 2
SELECT * FROM tableName WHERE 0
1.SELECT * FROM tableName -- all record return
2.SELECT * FROM tableName WHERE 1 -- Return true value
3.SELECT * FROM tableName WHERE 123 -- Return true value 
4.SELECT * FROM tableName WHERE '2xyz' -- Return true value because there first character is number

5.SELECT * FROM tableName WHERE '' -- false value return
6.SELECT * FROM tableName WHERE 'xyz' -- false value return