【问题标题】:Sybase, data typeSybase,数据类型
【发布时间】:2020-03-28 22:43:01
【问题描述】:

我有 2 个查询:

(1)

declare @m varchar  
set @m='10'  
select * from test where month=@m  

(2)

declare @m varchar(2)  
set @m='10'  
select * from test where month=@m  

结果中的行数不同。在 2 个变体中比在第一个变体中更多。可能是什么原因?

【问题讨论】:

  • 您可以通过尝试选择您为@m 设置的内容进行调试,因此在set 之后尝试select @m。这样您就可以看到变量中存储的内容。

标签: sql-server tsql sybase sqldatatypes


【解决方案1】:

这是因为当您不指定 varchar 变量可以容纳多少字节时,引擎会使用 default1

当 n 未在数据定义或变量声明中指定时 语句,默认长度为1。如果使用时没有指定n CAST 和 CONVERT 函数,默认长度为 30。

所以,在第一种情况下,您有:

select * from test where month=1  

第二个:

select * from test where month=10

【讨论】:

  • 谢谢,对我有帮助。
猜你喜欢
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 2011-12-15
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多