代码之家  ›  专栏  ›  技术社区  ›  dummzeuch Stijn Sanders

访问文本字段上的唯一索引是否始终不区分大小写?

  •  4
  • dummzeuch Stijn Sanders  · 技术社区  · 14 年前

    我使用以下代码创建了一个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中,文本字段上的索引是否始终不区分大小写?如果没有,我做错什么了?

    1 回复  |  直到 14 年前
        1
  •  5
  •   JohnFx    14 年前

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

        2
  •  0
  •   miroxlav Mohit Deshpande    5 年前

    使用二进制字段

    Microsoft Access中的案例不敏感问题很久以前就在文章中得到了解决 KB244693号 由Microsoft和 still can be found in Web archive .

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

    类型二进制字段不能通过UI添加,但使用SQL语句将其添加到现有表中:

    ALTER TABLE Table1
      ADD COLUMN BinaryField1 BINARY(50)
    

    然后可以通过Access UI对其进行正常管理。