我有一个表,其中有一列 amount
类型 DEC
.
以下查询有效:
SELECT * FROM mytable WHERE amount < '1';
SELECT * FROM mytable WHERE amount = '1.5';
即即使我使用像 amount
这样的引号对于字符值(尽管它们实际上是数字),查询仍然有效。
我的问题是:
这是因为 SQL Server“理解”数据类型实际上是一个数字并在执行 SQL 时忽略引号 select
或者
SQL 服务器首先转换 amount
值转换为文本,然后进行比较?所以这会因转换而产生性能开销?
最佳答案
是的,发生了数字转换,因为“金额”列被定义为数字。要对此进行测试,您可以尝试:
SELECT * FROM mytable WHERE amount < '1a';
您将收到错误消息:
Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.
意思是 varchar 被转换为数字,而不是相反。
关于mysql - 这里有文本到数字的转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15717034/