2013-10-02 3 views
1

Я использую Oracle и MySql, так что если у вас есть какие-либо ответа в обоих кодов, пожалуйста, дайте мне знать,SQL матч первой части строки и сравнить

Издание:

У меня есть 2 колонки в одну таблицу под названием: USers

Колонка # 1 = Имена Колонка 2 = UCNames

Этот список содержит имена, которые из разных источников, но частично совпадают, как:

Имена


Alex JonesMarfex

UCNames


Alex Джоннес Майк Marfex

Я хочу, чтобы сравнить оба столбцов и найти матч на основе следующих признаков:

Поиск по первому 4 для букв и 4 последних слов и хранить в новой колонке под названием: verifiyed

Благодарности

+0

Что вы собираетесь сравнивать? Два столбца - это сама или другая переменная с этими двумя столбцами. – dcp1986

+1

При проверке последних четырех слов ваш пример не будет проверяться. Хотя можно было бы написать некоторый sql, чтобы разделить его на слова (не главная проблема, если слова разделены только пробелами без пунктуации), как вы хотите обрабатывать поисковые запросы, когда не существует 4 слов (или для первого часть, нет 4 первых букв)? – Kickstart

ответ

0

Это дает первое слово в строке

Substring(Col,1,(Locate (' ',Col + ' ')-1)) First 

Это дает вам последнее слово в строке

Reverse(Substring(Reverse(Col), 1, Locate(' ',Reverse(Col)) - 1)) Last 

Так что ваши сравнения может быть

Where 
    Substring(Col1,1,(Locate(' ',Col1 + ' ')-1)) 
    = Substring(Col2,1,(Locate(' ',Col2 + ' ')-1)) 
    And 
    Reverse(Substring(Reverse(Col1), 1, Locate(' ',Reverse(Col1)) - 1)) 
    = Reverse(Substring(Reverse(Col2), 1, Locate(' ',Reverse(Col2)) - 1)) 

Я пошел со словами, которые казались более безопасными для того, что вы пытаетесь сделать только с немного больше усилий. Если вы хотите сохранить 4-х символов, просто заменить Расположить эс с 4.

+1

Если вы используете MySQL, то функция SUBSTRING_INDEX будет подходящей. – Kickstart

+0

Спасибо, @KickStart. В основном пользователь SQL Server здесь. Отредактировано за ваш комментарий. – asantaballa

+1

Нет проблем. Substring_index возвращает строку, поэтому вам не нужно использовать подстроку. Мой SQL Server плохой, а мой Oracle около 6 лет устарел! – Kickstart

0

На основе ответа по @asantaballa, но с помощью функции SUBSTRING_INDEX MySQL: -

WHERE SUBSTRING_INDEX(Col1, ' ', 1) = SUBSTRING_INDEX(Col2, ' ', 1) 
AND SUBSTRING_INDEX(Col1, ' ', -1) = SUBSTRING_INDEX(Col2, ' ', -1) 

или грубо проверить первые 4 символа и последние 4 слова: -

WHERE SUBSTRING(Col1, 1, 4) = SUBSTRING(Col2, 1, 4) 
AND SUBSTRING_INDEX(Col1, ' ', -4) = SUBSTRING_INDEX(Col2, ' ', -4) 
Смежные вопросы