首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数T-SQL CTE char()的类型与强制转换(作为char)不同。

函数T-SQL CTE char()的类型与强制转换(作为char)不同。
EN

Stack Overflow用户
提问于 2017-11-01 11:27:13
回答 1查看 46关注 0票数 0

我想为chars a创建一个小的cte。但是,如果我对递归部分使用char()-function,如下所示:

代码语言:javascript
复制
with cte(chars)
as (
    select cast('a' as char) as chars
    union all
    select char(ascii(chars) + 1 ) from cte
    where chars < 'z'
)
select *
from cte

即使tho ()返回char(1),数据类型也不匹配。但是,如果char()-function被抛到char(1),那么它运行得非常好:

代码语言:javascript
复制
with cte(chars)
as (
    select cast('a' as char) as chars
    union all
    select cast(char(ascii(chars) + 1 ) as char) from cte
    where chars < 'z'
)
select *
from cte

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-01 11:30:47

在Server中,不要在没有长度的情况下使用char() (和相关类型)。默认长度因上下文而异--谁想要跟踪这些事情呢?

以下工作:

代码语言:javascript
复制
with cte(chars) as (
      select cast('a' as char(1)) as chars
      union all
      select char(ascii(chars) + 1 ) from cte
      where chars < 'z'
     )
select *
from cte;

换句话说,char()cast()中的默认长度与declare中的默认长度不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47053771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档