2010-08-28 3 views
0

У меня есть две таблицы SQL с данными, которые я хотел бы сравнить. Таблицы имеют следующие структуры:Сравнение двух строк arraylists или списков

id, title,url 

Я хочу сравнить таблицы по названию, где, если строки одинаковы или равно было бы отметить, записывая записи в файл. Кто-то предложил не делать это в SQL и копировать данные и использовать его в .net в качестве списков для сравнения.

Любые предложения о том, как это сделать?

типичный пример заголовка:

Таблица 1 - KPTH Fox 44 через

Таблица 2 - KPTH Fox44

Я попытался с помощью LIKE в SQL с групповым символом '%', но его работы только для этот тип примеров и не будут работать на

ABC

MSabC

+1

Равенство легко проверить, но «подобное» может быть субъективным и трудно дать убедительный ответ. Возможно, вы могли бы дать более подробную информацию о том, что вы подразумеваете под «похожими». – kbrimington

+0

vbNewbie, вам нужно будет более ясно о «похожих». В этом суть этого вопроса, а не списки или SQL. –

+0

похоже на правописание – vbNewbie

ответ

2

Это было бы проще сделать это в БД, а затем вернуть набор данных, которые соответствуют. Если предположить, что две таблицы идентичны, и вы на соответствие только название ваш SQL будет выглядеть следующим образом:

SELECT [id], [title], [url] 
FROM [Table1] t1 
JOIN [Table2] t2 ON t1.[title] = t2.[title] 

Затем перебираем каждой записи в наборе результатов и писать все поля, которые вы хотите в файл.

Если вы хотите просто придерживаться SQL, вы можете запустить запрос, а затем просто сохранить outout в файл, используя инструмент запроса для вашей БД, например Management Studio или что-то в этом роде.

EDIT: Основываясь на «аналогичном» требовании, вы можете использовать команду SOUNDEX в SQL для сравнения, если они похожи. See MSDN для получения дополнительной информации о команде SOUNDEX.

EDIT 2: Чтобы добавить дополнительную информацию в отношении добавленных требований: в SQL это подобное требование может быть затруднено. Вы можете проанализировать заголовок в словах, а затем сохранить их в таблице temp и посмотреть, сколько совпадений, а затем на основе порога, чтобы назначить условие соответствия. Похоже, что ваши данные также содержат URL-адрес, поэтому вы также можете использовать его и проверить на базовом URL-адресе, чтобы увидеть, совпадают ли они, прежде чем выполнять взвешенную проверку титула. Я не совсем понимаю, какой результат вы ищете, кроме названия.

Это действительно не очень простая задача, и я думаю, что кто-то сможет просто дать вам ответ. Я уверен, что профессор в университете работает над этой проблемой.

+0

Я думаю, что трудность использования чистого SQL-решения, такого как это, заключается в том, что он проверяет только на равенство. Это также не относится к анализу нечеткого подобия. – kbrimington

+0

@kbrimington Я вижу вашу мысль. Он мог бы попробовать команду SOUNDEX в SQL, которая могла бы соответствовать «аналогичному» требованию. Я отредактировал свой ответ, чтобы отразить это. – Kelsey

+0

SOUNDEX ...это похоже на COMPARE в vb.net. – vbNewbie

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