创建分区函数出错,请指点

[复制链接]
查看11 | 回复8 | 2014-2-18 16:42:02 | 显示全部楼层 |阅读模式
用CREATE PARTITION FUNCTION MOCF(char) AS RANGE LEFT FOR VALUES('20121231999','20131231999')出现“
将范围值转换为分区函数参数类型时截断了数据。序号为 1 的范围值需要进行数据截断。”,请问如何处理?

回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
char 换成 varchar 可以吗?
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
kinwar 发表于 2014-9-22 09:10
char 换成 varchar 可以吗?

试了结果一样,说明下要用来没区字段本来就是字符型的

回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
原因是分区值和表定义的值不匹配,虽然你认为你写的是CHAR,可是SQL Server不会认为你提供的分区函数值是char类型
所以你试试这样去写:
CREATE PARTITION FUNCTION MOCF(char) AS RANGE LEFT FOR VALUES((CAST(20121231999 AS char(100))),(CAST(20131231999 AS char(100))))

回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
CareySon 发表于 2014-9-23 10:02
原因是分区值和表定义的值不匹配,虽然你认为你写的是CHAR,可是SQL Server不会认为你提供的分区函数值是char ...

仍然这种错误,请指点
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
这个对我太深了,学习中!帮忙顶顶!
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
herry507 发表于 2014-9-23 21:53
仍然这种错误,请指点

CREATE PARTITION FUNCTION MOCF(char(100)) AS RANGE LEFT FOR VALUES('20121231999','20131231999')
这么写试试
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
CareySon 发表于 2014-9-24 16:15
CREATE PARTITION FUNCTION MOCF(char(100)) AS RANGE LEFT FOR VALUES('20121231999','20131231999')
...

谢谢,这样可以,但我实际用字段没这么长,在取值等方面会有影响吗?
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
herry507 发表于 2014-9-25 23:52
谢谢,这样可以,但我实际用字段没这么长,在取值等方面会有影响吗?

你可以根据自己的需求调整。我这里只是随手写一个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行