字符函数问题

jereco 2020-07-09 04:24:04
如下图,left 为什么会出现小数点
...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2020-07-09
  • 打赏
  • 举报
回复
DECLARE @v FLOAT
SET @v=20160709
SELECT LEFT(@v,6), LEFT(CAST(@v AS INT),6)
/*
2.0160    201607
*/

唐诗三百首 2020-07-09
  • 打赏
  • 举报
回复
因为字段类型float是浮点数, 转为文本型是"2.01604e...". 试试这样写,

declare @x float

select @x=20160430

select x=@x,y=left(str(@x,8,0),6)

/*
x                      y
---------------------- --------
20160430               201604

(1 行受影响)
*/
阿许2014 2020-07-09
  • 打赏
  • 举报
回复
我执行 LEFT(purprice,6) + 1 就会报错 ,说明现在你看到的结果就是个字符串 消息 245,级别 16,状态 1,第 1 行 在将 varchar 值 '13.700' 转换成数据类型 int 时失败。
阿许2014 2020-07-09
  • 打赏
  • 举报
回复
你这是取6位长度,而order_date是数值,会隐式转换成字符串,再取左边6位, 自然就会有0了

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧