单引号在mysql中做了什么

时间:2013-11-22 22:05:15

标签: mysql sql string

我正在更新MySQL中的浮点列,并且以下两种语法都有效。

UPDATE t1 SET col1 = 0;

UPDATE t1 SET col1 = '0';

当我将一个字符串传递给一个浮点列时,不应该打破底部吗?

根据MySQL documentation,单引号是一个字符串文字。

  
    

9.1.1。字符串文字字符串是一个字节或字符序列,包含在单引号(“'”)或双引号中     (“”“)字符。例如:

  
     

'一个字符串'“另一个字符串”引用的字符串彼此相邻   被连接成一个字符串。以下是   当量:

     

'字符串'''''''字符串'

2 个答案:

答案 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,然后分配给您的列。