这里有数字转换的文字吗?

时间:2013-03-30 09:34:32

标签: mysql sql select types decimal

我的表格中包含amount类型的DEC列 以下查询有效:
SELECT * FROM mytable WHERE amount < '1';

SELECT * FROM mytable WHERE amount = '1.5';

即。即使我使用像amount这样的引号用于字符值(尽管它们实际上是数字),查询仍然有效。

我的问题是:
这是因为SQL Server&#34;了解&#34;数据类型实际上是一个数字,并在执行sql select时忽略引号 OR
SQL服务器首先将amount值转换为文本,然后进行比较?这会因转换而产生性能开销吗?

1 个答案:

答案 0 :(得分:-1)

是的,正在进行数值转换,因为列'amount'被定义为数字。要对此进行测试,您可以尝试:

SELECT * FROM mytable WHERE amount < '1a'; 

您将收到错误消息:

Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.

意味着varchar正在转换为数字,而不是相反。