这种行为是否存在于所有主要数据库中?

use*_*729 1 sql comparison database-agnostic

mysql> select 0.121='0.121';
+---------------+
| 0.121='0.121' |
+---------------+
|             1 |
+---------------+
Run Code Online (Sandbox Code Playgroud)

是否持有其他数据库number='number'是true?

Ste*_*ger 6

首先:大多数数据库都使用本地化的数字格式.因此,将数字转换为字符串很可能并不总是与硬编码字符串相同.

然后:您将遇到使用sql语法的问题.请参阅oracle bellow的实验.


在Oracle中,您总是需要一个FROM子句(除了他们在版本10中更改了它).

select 0.121='0.121' from sys.dual
Run Code Online (Sandbox Code Playgroud)

在Oracle中,在select子句中不能有这样的表达式.

你需要一个案例陈述:

select case when 0.121 = '0.121' then 1 else 0 end as xy 
from sys.dual
Run Code Online (Sandbox Code Playgroud)

然后你得到一个错误,它不是数字.要解决此问题,请将其转换为:

select case when To_Char(0.121) = '0.121' then 1 else 0 end as xy 
from sys.dual
Run Code Online (Sandbox Code Playgroud)

这将回来0!因为,在我的机器上,0.121转换为字符串".121".这些是瑞士的设置.如果我有德语设置,那就是",121"(注意逗号).

所以最后回答这个问题:不.