Короткий ответ: нет способа точно сделать это, особенно с помощью только чистого SQL.
Вы можете найти точные совпадения, и вы можете найти шаблон подстановки, совпадающую с помощью LIKE
оператора или (потенциально огромной) серии регулярных выражений, но вы не можете найти подобные матчей не может найти потенциальные опечатки матчей.
Существует несколько потенциальных подходов, которые я могу придумать для решения этой проблемы, в зависимости от того, какой тип приложения вы строите.
Во-первых, нормализуйте данные продавца в базе данных. Я бы порекомендовал против хранения точной, необработанной строки, такой как Bruger King в вашей базе. Если вы сталкиваетесь с продавцом, который не соответствует известному набору продавцов, спросите пользователя, совпадает ли он с чем-то в вашей базе данных. Когда данные поступают, обрабатывайте их и сопоставляйте с существующим известным продавцом.
Хранить коэффициент подобия. Возможно, вам повезло, используя что-то вроде Jaccard index, чтобы судить, как аналогично две строки. Возможно, после удаления цифр это может работать довольно хорошо. По крайней мере, это может позволить вам создать пользовательский интерфейс, который может попытаться угадать, какой он есть. Кроме того, некоторые двигатели базы данных имеют полнотекстовые индексирующие операторы, которые могут распознавать такие вещи, как , похожие на или звучит как. Это потенциально может стоить исследовать.
Запомните торговые матчи для одного пользователя. Если пользователь исправляет bruger king 123 main st до Burger King, сохраните это отношение и запомните его в будущем, не запрашивая у пользователя. Эти данные также могут использоваться, чтобы помочь другим пользователям исправить свои данные.
Но что делать, если нет пользовательского интерфейса? Возможно, вы пытаетесь выполнить автоматическую обработку данных. Я действительно не вижу возможности справиться с этим без какого-либо вмешательства человека, хотя некоторые из описанных выше методов могут помочь автоматизировать этот процесс. Я также посмотрю на источник ваших данных. Возможно, есть отдельный идентификатор продавца, который вы можете использовать в качестве ключа, или, может быть, существует где-то список всех известных торговцев (возможно, компании кредитных карт предоставляют этот API?) Если есть лодку с нагрузкой данных для обработки, другой вариант был бы частично автоматизировать его с помощью службы, такой как Amazon's Mechanical Turk.
мне нужен подсчет для все коммерсанта не только один купец, так как «% король%» не будет работать – Mani007
выход должен выглядеть следующим образом: торговец Количество категория bruger король 2 ресторан метро 1 ресторан метро 1 путешествие mc donalds 2 ресторан mc donalds 1 заправочная станция – Mani007