我相信您可以通过准备一些数据来实现此搜索。字段拆分后,您将不需要LIKE 运算符,而只需对子字段进行精确匹配。
对于查找数据,将 B 列更改为 5 列:
B1 || B2 || B3 || B4 || B5 || Column C
999 || X || 000 || 400 || X || John
X || 22222 || X || 777 || X || Smith
对于输入数据,进行类似的拆分:
IN1 || IN2 || IN3 || IN4 || IN5
999 || 55555 || 000 || 400 || 9999
800 || 22222 || 123 || 777 || 2233
现在您将不得不使用... 5 次查找,每个子字段之一
Lkp1
Condition : IN1 = B1
Output : Match1_B1, Match1_B2, Match1_B3, Match1_B4, Match1_B5, Match1_Column_C
Lkp2
Condition : IN2 = B2
Output : Match2_B1, Match2_B2, Match2_B3, Match2_B4, Match2_B5, Match2_Column_C
以此类推到 5
第一行你会得到:
Match1_B1 : 999
Match1_B2 : X
Match1_B3 : 000
Match1_B4 : 400
Match1_B5 : X
Match1_Column_C : John
Match2_B1 : NULL
Match2_B2 : NULL
Match2_B3 : NULL
Match2_B4 : NULL
Match2_B5 : NULL
Match2_Column_C : NULL
Match3_B1 : 999
Match3_B2 : X
Match3_B3 : 000
Match3_B4 : 400
Match3_B5 : X
Match3_Column_C : John
Match4_B1 : 999
Match4_B2 : X
Match4_B3 : 000
Match4_B4 : 400
Match4_B5 : X
Match4_Column_C : John
Match5_B1 : NULL
Match5_B2 : NULL
Match5_B3 : NULL
Match5_B4 : NULL
Match5_B5 : NULL
Match5_Column_C : NULL
现在在表达式中链接所有查找并检查子字段是否匹配:
IIF( (ISNULL(Match1_B1) OR Match1_B1 != 'X')
AND (ISNULL(Match2_B2) OR Match2_B2 != 'X')
AND (ISNULL(Match3_B3) OR Match3_B3 != 'X')
AND (ISNULL(Match4_B4) OR Match4_B4 != 'X')
AND (ISNULL(Match5_B5) OR Match5_B5 != 'X'),
IIF(ISNULL(Match1_Column_C),
IIF(ISNULL(Match2_Column_C),
IIF(ISNULL(Match3_Column_C),
IIF(ISNULL(Match4_Column_C),
Match5_Column_C,
Match4_Column_C
),
Match3_Column_C
),
Match2_Column_C
),
Match1_Column_C
)
)
我希望这应该接近你想要的!