MS Access创建表语句语法错误求助:请帮我排查语句问题
帮你排查MS Access CREATE TABLE语句的问题
先把你的原语句贴出来方便咱们对照:
Create Table Extract( [WeekID] TEXT(10) , [RetailerID] INT , [ItemCode] INT , [SaleType] TEXT(1) , [Multiple] INT , [Store] INT , [DateCollected] DATETIME , [Price] DECIMAL(9,4) )
我梳理了几个Access SQL里容易踩的坑,看看是不是你的问题所在:
- 数据类型的兼容性问题:
- 先说
INT:这个其实是INTEGER的别名,在Access里是能用的,但如果遇到奇怪的报错,换成INTEGER会更稳妥,毕竟是Access原生支持的类型名。 - 重点看
Price字段的DECIMAL(9,4):Access的旧版Jet引擎对DECIMAL类型支持有限,要是你执行时提示“数据类型无效”之类的错误,建议换成NUMERIC(9,4)(和DECIMAL等价,但兼容性更好),或者直接用CURRENCY类型——毕竟是存价格,CURRENCY专门为货币数值优化,精度也足够。
- 先说
- 保留字的处理:
你给Multiple加了方括号,这点做得非常对!因为Multiple是Access的保留关键字,直接用会触发语法错误,必须用方括号把它包起来。其他字段名没问题,不用额外处理。 - 可读性优化(顺便避坑):
虽然你的语句语法上没大问题,但把每个字段单独换行写,不仅可读性强,还能避免漏写逗号这类低级错误,比如改成这样:CREATE TABLE Extract ( [WeekID] TEXT(10), [RetailerID] INTEGER, [ItemCode] INTEGER, [SaleType] TEXT(1), [Multiple] INTEGER, [Store] INTEGER, [DateCollected] DATETIME, [Price] NUMERIC(9,4) ) - 格式兼容性小细节:
如果你的数据库是老版的.mdb格式,DATETIME可以换成DATE/TIME,不过DATETIME也能兼容;要是.accdb格式,就不用纠结这个了。
如果执行时还是报错,把具体的错误信息发出来,就能更快定位问题啦~
内容的提问来源于stack exchange,提问作者Shiniece
相关产品推荐
相关产品推荐

