mysql - 这里有文本到数字的转换吗?

标签 mysql sql select types decimal

我有一个表,其中有一列 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/

相关文章:

php/mysql转义&字符和+字符

mysql函数选择一个或另一个变量

PHP PDO语句过滤记录

mysql - 从数据库中选择和排序消息

sql - 从 GROUP BY 操作中选择最大计数

sql - 从单列中选择多行到单行

SQL 按问题分组

php - 从 wpdb 查询后动态设置选择列表的选定值

带有选择查询的postgresql多重插入

mysql - 从列表中值所在的列中选择或没有此类列