我的表格中包含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
值转换为文本,然后进行比较?这会因转换而产生性能开销吗?
答案 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正在转换为数字,而不是相反。