Sql 更新varchar字段;使用单引号与不使用引号的区别

Sql 更新varchar字段;使用单引号与不使用引号的区别,sql,teradata,Sql,Teradata,我正在使用Teradata作为数据库 桌子 我可以像这样更新数字字段 update ... set number = '1' or set number = 1 当我使用任何强制转换函数更新第二种方式时,我能够在select查询[had max(number)column]中得到正确的结果,即设置number=1 使用此选项(即set number='1')会在select查询中给出错误的结果,但没有显示 使用cast函数 有谁能解释这种区别吗 简言之,我需要两者之间的区别 更新 se

我正在使用
Teradata
作为数据库

桌子

我可以像这样更新数字字段

update ...

set number = '1'

or 

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

使用此选项(即
set number='1'
)会在select查询中给出错误的结果,但没有显示 使用cast函数

有谁能解释这种区别吗

简言之,我需要两者之间的区别 更新

set number = '1'

or 

set number = 1
将VARCHAR更新为“1”

set number = 1
自动进行Teradata样式的类型转换(格式内右对齐),并将数字设置为“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',如果需要数字比较,则应使用数字数据类型。

很高兴知道dnoeth。max(column)应选择该组中列值最高的记录。我们在该列中也有一些aplha数值值,如sr001、se002、3、4、9。。
set number = 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