2015-03-12 2 views
0

Я пытаюсь настроить запрос для поиска столбца для определенной группировки символов, например «EPC». По большей части исходные три символа в строке будут содержать «EPC», но для некоторых описаний это может выглядеть как «XXX-EPC», а количество/тип символов до «EPC» может варьироваться.Ограничить запрос LIKE в MS Access для поиска начального количества символов для определенной группы символов

Есть ли способ ограничить количество символов, которые запрос LIKE может выполнять в описании, например, например, искать «EPC» в первых 8 символах описания, и если «EPC» существует, сгруппированы вместе в любом месте эти первые 8 символов, возвращает этот ввод данных?

+1

Два ответа, которые в настоящее время опубликованы, выглядят так, как будто они принесут результаты, которые вы ищете. Однако я хотел прокомментировать, что я не могу придумать разумного решения для этого, которое [sargable] (http://stackoverflow.com/questions/799584/what-makes-a-sql-statement-sargable). И как таковая, производительность для этих запросов будет плохой. (Просто что-то, о чем нужно помнить.) – DeadZone

ответ

1

Вы не можете делать то, что хотите, только с LIKE, но вы можете использовать LEFT для получения первых 8 символов, затем применить LIKE к этому.

SELECT* FROM EarnedHours WHERE LEFT(MatlDesc, 8) LIKE '*EPC*' 
+0

Вот SQL, который я должен вернуть всем элементам с «EPC» в начале описания материала. SELECT * FROM EarnedHours ГДЕ MatlDesc LIKE 'EPC *'; Как включить LEFT в поиск первых 8 символов? И вернет ли он только первые 8 символов из MatlDesc или вернет ли это описание? – Emburgh

0

Вы можете использовать Left и InStr может быть?

SELECT 
    yourFields 
FROM 
    yourTable 
WHERE 
    InStr(Left(theFieldName, 8), "EPC") <> 0