2010-08-30 11 views
0

У меня есть база данных таблиц, в которой мне нужно выполнить некоторую сравнительную работу, и сервер sql ограничен средствами выполнения строковых сравнений. Я помещал все данные в списки и думал об использовании string.compare или string.contains, но не похоже, что он работает правильно. Возможно, у кого-то есть лучшее предложение о том, как это сделать. Это большой объем данных, и мне нужно сделать несколько совпадений, чтобы избежать ручной проверки каждой строки. Вот пример данных и кода;сравнение строк

string 1 
adage.com via Drudge Report 
Airdrie & Coatbridge Advertiser 
Silicon 
A NOVO SA 

string 2 
adage.com 
Airdrie and Coatbridge Advertiser 
Silicon.com 
The A Novo 

Теперь это типичные примеры, которые должны соответствовать, но я не уверен, как заставить это работать.

шероховатой реализация кода:

For i As Integer = 0 To list1.Count - 1 
      For j As Integer = 0 To list2.Count - 1 
       If list1.Item(i).Contains(list2.Item(j)) Then 
        outfile.WriteLine("found match") 

       End If 
      Next 
     Next 

ответ

1

Если я правильно понимаю ваши требования, вы хотите, чтобы соответствовать, если либо подстрока Ь, или наоборот. Так что вам не нужно:

If list1.Item(i).Contains(list2.Item(j)) OR list2.Item(j).Contains(list1.Item(i)) 

Вышеуказанное будет делать сравнение с регистром. Если вы хотите регистрозависимость сравнения, то вы могли бы сделать что-то вроде этого:

If list1.Item(i).ToLower().Contains(list2.Item(j).ToLower()) OR 
    list2.Item(j).ToLower().Contains(list1.Item(i).ToLower()) 
+0

Спасибо за ответ. Должен ли я беспокоиться о случае? будет ли он обнаруживать различия в случае письма. – vbNewbie

+0

@vbNewBie - см. Мое последнее редактирование. – dcp

0

Вы хотели бы использовать WHERE string1 LIKE '%' + string2 + '%' в вашем SQL.

Смежные вопросы