Access文本字段上的唯一索引是否总是不区分大小写?

4
我使用以下代码创建了一个 MS Access 表:

我使用以下代码创建了一个 MS Access 表:

  tbl := Database.CreateTableDef('English', 0, '', '');
  try
    fld := tbl.CreateField('ID', dbLong, 0);
    fld.Attributes := dbAutoIncrField + dbFixedField;
    tbl.Fields.Append(fld);

    fld := tbl.CreateField('Content', dbText, 255);
    fld.Required := true;
    fld.AllowZeroLength := false;
    tbl.Fields.Append(fld);

    Database.TableDefs.Append(tbl);

    idx := tbl.CreateIndex('PrimaryKey');
    idx.Fields.Append(idx.CreateField('ID', EmptyParam, EmptyParam));
    idx.Primary := True;
    idx.Unique := true;
    tbl.Indexes.Append(idx);

    idx := tbl.CreateIndex('IX_Content');
    idx.Fields.Append(idx.CreateField('Content', EmptyParam, EmptyParam));
    idx.Primary := false;
    idx.Unique := true;
    tbl.Indexes.Append(idx);
  finally
    tbl := nil;
  end;

这个方法在我尝试将“Field type”和“Field Type”这两个字符串插入表格时出现了问题。我收到一条错误消息,告诉我唯一索引限制了我这样做。正如您所看到的,它们只有第二个单词的大小写不同。由于我没有明确地使索引不区分大小写(我甚至不知道如何做到这一点),我不太明白为什么会发生这种情况。在 MS Access 中,对文本字段的索引总是不区分大小写吗?如果不是,那么我做错了什么?

2个回答

5

Access Jet数据库基本上是不区分大小写的。这就是你的问题所在。据我所知,没有办法使Access索引区分大小写。


1
嗯,当然,在阅读了您的答案之后,我发现这在互联网上已经被提到了很多次,这很奇怪,因为我已经试图寻找解决方案几个小时了。这只证明使用谷歌也需要一些运气。 - dummzeuch

3

使用二进制字段

微软公司曾经发表过一篇名为KB244693的文章,解决了Microsoft Access中不区分大小写的问题,现在仍然可以在Web Archive中找到该文章

基本上,解决方案是在MS Access表中添加一个二进制字段,这个字段最终是区分大小写的(使用Unicode来存储二进制内容),并且仍然可以像文本字段一样使用运算符=LIKE等。

无法通过UI添加二进制类型的字段,但您可以使用以下SQL语句将其添加到现有表中:

ALTER TABLE Table1
  ADD COLUMN BinaryField1 BINARY(50)

然后您可以通过访问用户界面正常管理它。最初的回答。

这是正确的答案,应该标记为正确。 - Gustav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接