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