Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS Sql Server 2008 r2 Help my!  [new]
k4sk4d
Member

Откуда:
Сообщений: 2
Всм привет! Ребятя помогите новичку!
Есть две таблицы List и Spisok, в первой в поле FIO ФИО указаны полностью а во второй только фамилия и инициалы. Как выполнить поиск совподений только по фамилиям?
Написал следующий запрос но он ищет только полное совпадение, а нужно по фамилии
Select *
From List LEFT JOIN Spisok ON
WHERE List.FIO LIKE Spisok.FIO
18 окт 18, 07:52    [21707340]     Ответить | Цитировать Сообщить модератору
 Re: MS Sql Server 2008 r2 Help my!  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
k4sk4d
Всм привет! Ребятя помогите новичку!
Есть две таблицы List и Spisok, в первой в поле FIO ФИО указаны полностью а во второй только фамилия и инициалы. Как выполнить поиск совподений только по фамилиям?
Написал следующий запрос но он ищет только полное совпадение, а нужно по фамилии
Select *
From List LEFT JOIN Spisok ON 
WHERE List.FIO LIKE Spisok.FIO


данный запрос вряд ли найдет что то кроме синтаксической ошибки
а по теме - отрезайте фамилию(например, до первого пробела), а потом уже лайкайте
и не забудьте про %
18 окт 18, 07:54    [21707343]     Ответить | Цитировать Сообщить модератору
 Re: MS Sql Server 2008 r2 Help my!  [new]
Dima T
Member

Откуда:
Сообщений: 14606
Попробуй так
select * from List, Spisok
    where List.FIO like LEFT(Spisok.FIO, CHARINDEX(' ', Spisok.FIO)) + '%'


Но учти что однозначного решения эта задача не имеет, поэтому однофамильцы продублируются всеми возможными комбинациями. Например два Иванова будут 4-мя записями.
18 окт 18, 08:27    [21707365]     Ответить | Цитировать Сообщить модератору
 Re: MS Sql Server 2008 r2 Help my!  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20218
Правильно - преобразовать полное ФИО в вариант с инициалами, а потом сравнивать - и именно сравнивать, а не лайкать, причём приведя всё к одному регистру (впрочем, зависит от collation). Но и в этом случае непременно будут ложные срабатывания.

Модератор: Тема перенесена из форума "Вопрос-Ответ".


Сообщение было отредактировано: 18 окт 18, 09:49
18 окт 18, 08:47    [21707376]     Ответить | Цитировать Сообщить модератору
 Re: MS Sql Server 2008 r2 Help my!  [new]
k4sk4d
Member

Откуда:
Сообщений: 2
Dima T, спасибо большое, этого достаточно. Я ещё пробавыл сначала брать по 5-8 символов и их сравнивать, но это сложнее. Ещё раз спасибо, вы помогли.
18 окт 18, 18:20    [21708132]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить