Почему 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

должен дать вам точные результаты!

Другие вопросы по тегам