update varchar field;使用单引号和不使用之间的区别

时间:2013-09-30 17:35:58

标签: sql teradata

我使用Teradata作为数据库,

sno varchar(10) primary,
number varchar(10)

我能够像这样更新数字字段

update ...

set number = '1'

or 

set number = 1

我能够在我的选择查询[ had max(number) column ]中获得正确的结果,当我使用任何强制转换函数更新第二种方式,即set number = 1时。

使用这个(即set number = '1')使用我的选择查询给出了错误的结果 使用演员函数

任何人都可以解释其中的区别吗?

总之,我需要区别  更新......

set number = '1'

or 

set number = 1

1 个答案:

答案 0 :(得分:1)

set number = 1

将VARCHAR更新为“1”

set number = 1

执行自动Teradata样式类型转换(在FORMAT中右对齐)并将数字设置为“1”。

SELECT (1 (VARCHAR(10))) || '#', FORMAT(1), TYPE(1);

 *** Query completed. One row found. 3 columns returned.
 *** Total elapsed time was 1 second.

(1||'#')    Format(1)                      Type(1)
----------- ------------------------------ -------------
   1#       -(3)9                          BYTEINT

当您查询MAX(col)时,您期望什么? 对于VarChars'9'大于'11',如果需要数值比较,则应使用数值数据类型。