Firebird数据库查询中'.'运算符的作用及查询异常咨询
Firebird中
3.的解析及查询返回全表数据的原因 1. 3.的本质:合法的浮点数字面量
Firebird里的3.并不是什么特殊运算符,它是合法的浮点数字面量写法,等价于3.0。SQL标准允许省略浮点数的小数部分(即小数点后不写数字),Firebird遵循这一规范,会自动将3.解析为数值3.0,因此不会触发语法错误。
2. 查询返回全表数据的原因
你的查询语句是:
SELECT * FROM AliasName WHERE AliasId=3. or 1=1--
这里有两个关键逻辑:
--是SQL的单行注释标记,它会注释掉该行中位于它之后的所有内容(此例中后面无内容,不影响)。OR逻辑运算符只要任意一个条件为真,整个WHERE子句就为真。而1=1是永真条件,不管AliasId=3.是否匹配,整个WHERE条件都会成立,因此Firebird会返回AliasName表中的全部数据。
内容的提问来源于stack exchange,提问作者mjk6035
相关产品推荐
相关产品推荐

