oracle TO_CHAR 长度 为什么select length(to_char('120','999')) from dual 的长度是4呢?

 我来答
一缕青丝发
2013-03-26 · TA获得超过1642个赞
知道小有建树答主
回答量:161
采纳率:33%
帮助的人:46.4万
展开全部
to_char('120','999')
这里的'999'是指的数字格式,可不是要to_char的具体的数字。
'999'格式的结果就是在'120'的前面加一个空格,即:' 120'
所以 length(to_char('120','999')) =4
更多追问追答
追问
这是默认加的空格吗?可不可以指定长度,比如我想指定5位,该怎么做? 谢谢!
追答
length(to_char(120,'9999'))
具体的可以看看下面百度百科里的介绍
http://baike.baidu.com/view/6011617.htm

但是非常不明白你这么做的目的是什么?
匿名用户
2013-03-26
展开全部
我不明白你这个操作是什么意思。

to_char('120','999')

首先, to_char 是把其他类型的 数据, 转换为字符串。
而 你这个 '120' 已经是 字符串了。
不知道为什么要再转换一次。

至于那个 LENGTH 为什么是4。
看看下面的执行结果, 请注意 TO_CHAR(120,'999'), 前面有一个空格。

SQL> SELECT TO_CHAR(120) A, LENGTH(TO_CHAR(120)) B FROM dual;
A B
------ ----------
120 3
SQL> SELECT TO_CHAR(120,'999') A, LENGTH(TO_CHAR(120,'999')) B FROM dual;
A B
-------- ----------
120 4
追问
我就像sqlserver 那样输出个定长的字符串来啊 例如 convert(varchar(20),getdate())
追答
Oracle  格式化日期,  比 SQL Server  省事多了去了。

SQL> SELECT
2 TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') a
3 FROM
4 dual;
A
--------------------------------------
2013-03-26 13:36:33

如果要凑够长度为20,你想在什么位置加空格, 就在什么位置上面加空格啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
射手幽灵伊
2013-03-26 · TA获得超过2716个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:1964万
展开全部
你可以先to_char('120','999'),看是什么结果。前面就是多了一个空格,你可以ltrim一下。
追问

 

 

 

是120,但是长度还是4???

追答
120前面有个空格的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式