MS Access SQL, где пункт с функцией LEFT - PullRequest
0 голосов
/ 08 мая 2018

Это в MS ACCESS, я хочу, чтобы пользователь ввел параметр и возвращал значения, основываясь на оставшихся 6 символах ввода пользователя. Мне не следует использовать функцию LEFT в предложении where, так как она недовольна для обработки причин загрузки, которые мне недоступны. Я также не могу использовать LIKE, потому что пользователь может вводить любые символы в параметр. Код:

SELECT Table1.[Customer Name], Table1.[Customer Code], Table1.[Part Number], Table1.Description, Table1.Vehicle,
       IIF ([Enter Part Number] = Table1.[Part Number], "YES, Exact Match", IIF (LEFT([Enter Part Number],6) = LEFT(Table1.[Part Number],6), "Possible Match - Base 6", "NONE")) AS Interchangeability
FROM Table1
WHERE [Customer Name] LIKE "*" & [Enter Customer Name] & "*" 
AND [Part Number] LIKE [Enter Part Number] & "*" ;

Проблема заключается в следующем: если пользователь вводит полный номер детали в качестве параметра, запрос возвращает только этот полный номер детали.Я хочу вернуть все номера деталей, которые имеют номер детали Base-6 ... так, чтобы первые шесть символов были одинаковыми.например, предложение where, которое я хочу использовать:

WHERE [Customer Name] LIKE "*" & [Enter Customer Name] & "*" 
AND LEFT([Part Number],6) = LEFT([Enter Part Number],6);

Я мог бы предложить пользователю ввести только 6 символов, но нам также необходим полный номер детали для точного соответствия.Я мог бы попросить их ввести основание 6 и полный номер детали, но это дополнительная работа и не масштабируемая.Пожалуйста, дайте мне знать, если есть другой способ сделать это или я должен использовать нахмурившуюся ЛЕВУЮ функцию в предложении where.

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете комбинировать LIKE и LEFT, где LEFT используется только в правой части оператора Where, а не в каждой записи, которую вы хотите проверить.

WHERE [Customer Name] LIKE "*" & [Enter Customer Name] & "*" 
AND [Part Number] LIKE LEFT([Enter Part Number],6) & "*" ;

Может быть, вам стоит это измерить.

Убедитесь, что пользователю не разрешено вводить символы подстановки, например * или?.

...