|
Access不区分大小写, sql server可以,如果的确需要,可使用字符的ascii码来对比. 参考下面的方法:
按区分大小写次序对记录排序
Microsoft Office Access 2007 以升序或降序对记录排序时不考虑大小写。但是,通过编写几行 Visual Basic for Applications (VBA) 代码,即可按文本的 ASCII 字符值对文本排序。基于 ASCII 值排序可以将大写字母与小写字母区别开来,并产生区分大小写的次序。
下表演示了 Access 中的升序排序次序与区分大小写排序次序的差异:
排序前 升序次序 区分大小写次序
c a A
D A B
a B C
d b D
B c a
C C b
A D c
b d d
尽管“升序次序”列中的结果可能最初出现在不可预测的某个位置,但它们并非如此。在“升序次序”列中,“a”出现在“A”之前,而“B”出现“b”之前。之所以这样,是因为在计算为文本值时,无论小写还是大写,“A”=“a”并且“B”=“b”。Access 在这里考虑了值的原始次序。在“排序前”列中,“a”位于“A”的前面,“B”位于“b”的前面。
执行区分大小写排序操作时,文本值被替换为它们的 ASCII 值。例如,A = 65,a = 97,B = 66,b = 98,等等。
编写 VBA 代码
创建 VBA 模块,并在“声明”节中键入以下行(如果那里还没有它): Option Explicit
在 Visual Basic 编辑器中,在一个模块内键入以下过程:Function StrToHex (S As Variant) As Variant'' Converts a string to a series of hexadecimal digits.' For example, StrToHex(Chr(9) & "A~") returns 09417E.' Dim Temp As String, I As Integer If VarType(S) <> 8 Then StrToHex = S Else Temp = "" For I = 1 To Len(S) Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00") Next I StrToHex = Temp End IfEnd Function可以从查询调用上述用户定义函数 StrToHex。将排序字段的名称传递给此函数时,它将按区分大小写的次序对字段值排序。
现在,创建用来调用此函数的查询。 在“创建”选项卡上的“其他”组中,单击“查询设计”。
在“显示表”对话框中,单击希望排序的表,然后单击“添加”。
将所需字段拖到网格中。
在第一个空白列的“字段”行中,键入 Expr1: StrToHex([SortField])。 StrToHex 是在前面创建的用户定义函数。SortField 是包含区分大小写值的字段的名称。
在“排序”单元格中,单击“升序”或“降序”。 如果选择升序次序,则以大写字母开头的值将出现在那些以小写字母开头的值之前。应用降序次序则以相反方式排序。
切换至数据表视图。 Access 将显示记录,这些记录以区分大小写的次序进行排序。 |
|