Почему LIKE в SQL Server и FindString в SSIS возвращают разные строки?
Я пытаюсь загрузить данные веб-журнала в базу данных SQL Server. Например, одна из моих колонок содержит URL-ссылку
http://stackru.com/questions/ask?title=why%
Мне нужно загрузить строки, содержащие строку "Вопросы" только в столбце URL.
В моем пакете служб SSIS я использую условное разбиение с условием:
FINDSTRING(url, "questions", 1) >= 1.
Я получил 500 строк.
Однако, когда я пытаюсь подтвердить это в базе данных со следующим условием:
where url like '%questions%'
Я получил 530 строк.
Хотя эти два условия эквивалентны и должны возвращать одинаковое количество строк. Может кто-нибудь помочь мне указать, в чем разница между этими фильтрами? Благодарю.
2 ответа
SSIS чувствителен к регистру, тогда как ваш SQL-запрос, вероятно, оценивается без учета регистра.
Пытаться FINDSTRING(LOWER(url), "questions", 1) >= 1
Или, если вы предпочитаете ответ SSIS, попробуйте where url like '%questions%' collate Latin1_General_CS_AS
Хорошо... одна разница, которую вы можете найти,
Ex URL: " https://stackru.com/questions/ask?title=why%"
так делать, как:
select * from table where column like '%/questions/%'
doing FINDSTRING(url,"/questions/",1)=1
должен дать вам точные результаты!