SQL Server 2008 R2에서 작업하고 있습니다. 'ACS'와 같은 특정 문자 집합을 찾기위한 쿼리를 만들고 있지만 'Non ACS'또는 'Non-ACS'가 포함 된 결과를 반환하지 않으려합니다 (왜 데이터가 일관성이 없다는 것은 저를 넘어서 있습니다). 나는 쿼리를 짧게 유지하기 위해 정규 표현식을 사용하고 싶다. 내가 시도한 것은 :sql patern이 공백이나 문자를 찾습니다.
WHERE ((tblTasks.strTask LIKE '%ACS%' COLLATE Latin1_General_CS_AS) AND (tblTasks.strTask NOT LIKE '%NON[-, ]ACS%' COLLATE Latin1_General_CS_AS))
이것은 작동하지 않습니다.
WHERE ((tblTasks.strTask LIKE '%ACS%' COLLATE Latin1_General_CS_AS) AND ((tblTasks.strTask NOT LIKE '%NON-ACS%' COLLATE Latin1_General_CS_AS) AND (tblTasks.strTask NOT LIKE '%NON ACS%' COLLATE Latin1_General_CS_AS)))
어떻게 하나의 공간 또는 두 단어/문자 집합 사이의 대시를 찾을 않습니다
나는 다음과 같은 WHERE 절을 피하기 위해 노력하고 있어요?
그리고 멋진 것 같은 것을 할 수있는 경우 :
WHERE (tblTasks.strTask LIKE '%^[NON]^[-, ]ACS%' COLLATE Latin1_General_CS_AS)
당신은 단지 공간을 찾거나 그냥 단순히 '% 1 %'또는 mycolumn 추천하기 추천 mycolumn'도 찾아보실 수 있습니다 대시하려고하면 '% - %' 'I 왜 정규 표현식이 필요한지 이해하지 못합니다. –
REGEX_LIKE가 있습니까? – sln
@VladimirOselsky 'NON ACS'또는 'NON-ACS'가 아닌 'ACS'가있는 행만 필요하기 때문에 정규 표현식이 필요합니다. '% %'또는 '% - %'를 사용하면 관련이없는 값이 반환됩니다. – Rob