0

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
4

1 回答 1

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',如果您需要数值比较,您应该使用数值数据类型。

于 2013-09-30T18:34:09.050 回答