我正在更新MySQL中的浮点列,并且以下两种语法都有效。
UPDATE t1 SET col1 = 0;
UPDATE t1 SET col1 = '0';
当我将一个字符串传递给一个浮点列时,不应该打破底部吗?
根据MySQL documentation,单引号是一个字符串文字。
9.1.1。字符串文字字符串是一个字节或字符序列,包含在单引号(“'”)或双引号中 (“”“)字符。例如:
'一个字符串'“另一个字符串”引用的字符串彼此相邻 被连接成一个字符串。以下是 当量:
'字符串'''''''字符串'
答案 0 :(得分:2)
通常单引号分隔字符串文字或日期时间文字。
在数值上下文中计算字符串时,MySQL会从字符串中的前导数字中获取数值。
mysql> select 0 + '123';
+-----------+
| 0 + '123' |
+-----------+
| 123 |
+-----------+
1 row in set (0.00 sec)
如果字符串中除了数字之外还有其他字符,则在计算数值之前会截断它们。这会生成警告,但表达式仍然有效。
mysql> select 0 + '123abc';
+--------------+
| 0 + '123abc' |
+--------------+
| 123 |
+--------------+
1 row in set, 1 warning (0.01 sec)
Warning (Code 1292): Truncated incorrect DOUBLE value: '123abc'
答案 1 :(得分:1)
字符串'1'
转换为float,然后分配给您的列。