我有一个以下格式的表格
ID | DC1 | DC2 | DC3 | DC4
1 |黑色箭头|蓝盒子|红糖|黑冠
2 |红芳|黄色卷轴|绿色天鹅绒|白巧克力|
3 |蓝海|红鱼|黑色窗口|大海
我需要的是一个ACCESS 2007查询,它将返回DC1中任何单词包含在DC1中的行,因此在上面的第1行和第3行中。
有什么想法吗?
答案 0 :(得分:0)
您将无法使用简单查询查询此数据。
首先,您需要规范化D4中的数据。由于这是Access,因此您可以使用VBA循环将值拆分为不同的表。
您可以执行以下操作:使用整数列ID
(不自动增量)和文本列DC4
创建新表“Table2”。然后像这样填充Table2:
Public Sub SplitValues()
Dim sourceSet As Recordset
Dim destinationSet As Recordset
Dim iterator As Integer
Dim sourceID As Integer
Dim stringArray() As String
Set sourceSet = CurrentDb.OpenRecordset("Select ID, DC4 From Table1")
CurrentDb.Execute ("Delete From Table2")
Set destinationSet = CurrentDb.OpenRecordset("Table2")
While sourceSet.EOF = False
sourceID = sourceSet("Id")
stringArray = Split(sourceSet("DC4").Value, " ")
For iterator = 0 To UBound(stringArray)
With destinationSet
.AddNew
!ID = sourceID
!DC4 = stringArray(iterator)
.Update
End With
Next
sourceSet.MoveNext
Wend
End Sub
然后你可以在原始表(我们称之为“Table1”)和新表(“Table2”)之间进行查询。查询将是这样的:
Select Table1.ID, Table1.DC1, Table1.DC4
From Table1
Inner Join Table2
On Table1.DC1 Like '*' & Table2.DC4 & '*'
And Table1.ID = Table2.ID
如果DC4有多个值重复,您可能需要使用Select Distinct
。