Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сравнение значения двух полей  [new]
Naile
Member

Откуда: Latvija
Сообщений: 145
В таблице 1 значения поля Name2 могут быть :
'aaa', 'bbb', 'ccc', 'ddd', 'dddd'
В таблице 2 значения поля Name могут быть :
'aaa street', 'bbb street', 'cccc street', 'ddd street', 'dddd street'.

Необходимо вытащить из таблице 2 данные (id) для 'aaa street', 'bbb street', 'ddd street', 'dddd street'. Т.е. найти соответствия между значения поля в первой и во второй таблице.
Изначально я делала
Name like ('%' + LTRIM(RTRIM(Name2)) + '%')
Но в таком случая я "доставала" для поля 'ccc' из первой таблицы значение id - 'cccc street' из второй таблицы, а так не дожно быть.

Contains я не могу использовать - Cannot use a CONTAINS or FREETEXT predicate on table or indexed view 'dbo.table2' because it is not full-text indexed. Опиция Fulltext Index (для таблицы 2) у меня идет как disable (использую SQL 2008 Express Edition).

Как, в таком случае, можно вытащить нужные мне данные?
8 май 13, 15:37    [14274431]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение значения двух полей  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Naile,

К полям, в первой и второй таблиц, добавить пробел вначале и в конце. Т.е. будет так ' ccc '
И сравнивать.
8 май 13, 15:42    [14274483]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение значения двух полей  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
Naile,

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

Под таблицей я понимаю не постоянную или временную таблицу,
а подзапрос (derived table) или CTE.
То есть всё в одной инструкции.
8 май 13, 15:42    [14274485]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение значения двух полей  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
trew,

(пробелы добавлять в запросе, в таблицах данные останутся без изменений)
8 май 13, 15:43    [14274500]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение значения двух полей  [new]
Naile
Member

Откуда: Latvija
Сообщений: 145
trew,

Сейчас попробую.

А если надо сравнить 'ccc' в одной таблице и 'ccc', 'cccc', 'ccccc' в другой таблице, этот метод сработает?
8 май 13, 15:53    [14274573]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение значения двух полей  [new]
Naile
Member

Откуда: Latvija
Сообщений: 145
Метод добавления пробела сработал, спасибо. Единственное что - для варианта
если надо сравнить 'ccc' в одной таблице и 'ccc', 'cccc', 'ccccc' в другой таблице
нужно добавлять пробел только в конце слова
8 май 13, 16:03    [14274635]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение значения двух полей  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
Naile
Метод добавления пробела сработал, спасибо. Единственное что - для варианта
если надо сравнить 'ccc' в одной таблице и 'ccc', 'cccc', 'ccccc' в другой таблице
нужно добавлять пробел только в конце слова
А если между словами не только пробелы?
8 май 13, 16:11    [14274705]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение значения двух полей  [new]
pio777
Member

Откуда:
Сообщений: 127
Naile,
А почему не так:
Name = Name2 + ' street'
8 май 13, 17:16    [14275059]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение значения двух полей  [new]
Naile
Member

Откуда: Latvija
Сообщений: 145
pio777,

А потому что где-то может быть 'ссс str', где-то 'ссс street', а где-то может 'ccc' - это я про вторую таблицу
8 май 13, 17:23    [14275084]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить