我是Access的新手,但我们的任务是开发一个查询,通过ODBC连接从我们现有的工单表中提取数据。我遇到的问题是某些货件有多个货物需要根据其ID进行分组。但是ID区分大小写(例如00000A和00000a不同)。我如何将这些条目分组,并将ID保存为区分大小写?我尝试使用在线发现的许多SQL命令,但是它们总是会导致错误,这是因为数据库没有托管在服务器上吗?
我试过了 -
SELECT wofile.id collate SQL_Latin1_General_CP1_CS_AS, First(wofile.wo_number)
AS FirstOfwo_number, First(wofile.cust_name) AS FirstOfcust_name,
First(woload.ship_act_date) AS FirstOfship_act_date, Last(woload.cons_act_date)
AS LastOfcons_act_date FROM wofile INNER JOIN woload ON wofile.id = woload.wo_id
WHERE (((StrComp([wofile].[id],[woload].[wo_id],0))=0))
GROUP BY wofile.id collate SQL_Latin1_General_CP1_CS_AS
和
SELECT wofile.id, First(wofile.wo_number)
AS FirstOfwo_number, First(wofile.cust_name) AS FirstOfcust_name,
First(woload.ship_act_date) AS FirstOfship_act_date, Last(woload.cons_act_date)
AS LastOfcons_act_date FROM wofile INNER JOIN woload ON wofile.id = woload.wo_id
WHERE (((StrComp([wofile].[id],[woload].[wo_id],0))=0))
GROUP BY wofile.id Cast(wofile.id As varbinary(100))
和
SELECT wofile.id, First(wofile.wo_number)
AS FirstOfwo_number, First(wofile.cust_name) AS FirstOfcust_name,
First(woload.ship_act_date) AS FirstOfship_act_date, Last(woload.cons_act_date)
AS LastOfcons_act_date FROM wofile INNER JOIN woload ON wofile.id = woload.wo_id
WHERE (((StrComp([wofile].[id],[woload].[wo_id],0))=0))
GROUP BY BINARY wofile.id
答案 0 :(得分:0)
如Microsoft支持文章here中所述:
Microsoft Jet数据库引擎本质上不区分大小写。连接表时,它将小写的“abc”与大写的“ABC”匹配,这在大多数情况下是可取的。
(对于较新的“Access数据库引擎”,a.k.a。“ACE”也是如此,它由Access 2010使用。)
本文接着描述了几种执行区分大小写的JOIN的策略。其中,最有可能为你工作的那个(你需要你的JOIN和你的GROUP BY子句区分大小写)是他们称之为“十六进制扩展”的那个,你在每个表中创建另一个列,存储ID值的十六进制表示。他们建议的功能是......
Public Function StrToHex(X As Variant) As Variant
Dim I As Long, Temp As String
If IsNull(X) Then Exit Function
Temp = Space$(Len(X) * 2)
For I = 1 To Len(X)
Mid$(Temp, I * 2 - 1, 2) = Right$("0" & Hex$(Asc(Mid$(X, I, 1))), 2)
Next I
StrToHex = Temp
End Function
...如果您的ID字符串不包含Unicode字符,它将起作用。该函数将字符串转换为每个字符的十六进制表示,例如
StrToHex("GORD") --> "474F5244"
StrToHex("gord") --> "676F7264"
一旦您使用相应的十六进制值填充了新的“代理ID”字段,就可以在JOIN和GROUP BY子句中使用这些字段。
有关详细信息,请参阅上述支持文章: