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

Откуда: Київ
Сообщений: 59
Добрый день.
Есть 2 таблицы с полями nvarchar(50) - наименования должности.

Есть такой запрос:
SELECT h.PstnHR, s.PstnStaff 
FROM HR.dbo.PositionHR h join HR.dbo.PositionStaff s on h.PstnHR = s.PstnStaff


Есть должности, которые совпадают в этих двух таблицах, но результат этого запроса - 0 строк.

Приведение к другим типам (чар, варчар, другая длина), коллейты - не помогли.

Но, например, вот такой запрос:
SELECT h.PstnHR, s.PstnStaff 
FROM HR.dbo.PositionHR h join HR.dbo.PositionStaff s on cast(h.PstnHR as nvarchar(9))  = cast(s.PstnStaff as nvarchar(9))

выводит те должности, у которых совпадают первые 9 букв, и только 9 - не меньше, не больше.

В связи с чем это может быть связано?
19 янв 17, 14:28    [20122882]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
AlesandraFioni,

если копипастили из экселя, то мог попасть всякий непечатный хлам, невидимый на экране.
19 янв 17, 14:36    [20122959]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
AlesandraFioni
В связи с чем это может быть связано?
Например, с наличием внеше похожих русских и английских символов,
разным количеством пробелов между словами,
словами, написанными с ошибками и т.д.
19 янв 17, 14:36    [20122963]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
o-o
Guest
так посмотрите десятый символ какой:
select unicode(substring(yourField,10, 1))

что-то непечатное там есть.
19 янв 17, 14:37    [20122969]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
AlesandraFioni
Member

Откуда: Київ
Сообщений: 59
Владислав Колосов
AlesandraFioni,

если копипастили из экселя, то мог попасть всякий непечатный хлам, невидимый на экране.


iap
AlesandraFioni
В связи с чем это может быть связано?
Например, с наличием внеше похожих русских и английских символов,
разным количеством пробелов между словами,
словами, написанными с ошибками и т.д.


Слова фактически совпадают, иначе бы при обрезке до определенного кол-ва символов они бы тоже не совпадали.

o-o
так посмотрите десятый символ какой:
select unicode(substring(yourField,10, 1))

что-то непечатное там есть.


вопрос не именно в 9м символе, то же самое происходит и при 10 и при 5 и т.д. - берутся совпадающие строки только по этой длине - 10/5/и т.д

то есть фактически, строки совпадают - хлам/непечатные символы и т.д. я уже исключила.
здесь что-то другое...
19 янв 17, 14:42    [20123008]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
AlesandraFioni,

автор
то есть фактически, строки совпадают

если фактически совпадают, то и equal будет
19 янв 17, 14:46    [20123027]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
iap
Member

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

Конечно другое.
В качестве полей для сравнения строковые стараются не применять.
Разве что для уточнения какого-нибудь после выборки по числовым ключам.
19 янв 17, 14:47    [20123033]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
AlesandraFioni
Member

Откуда: Київ
Сообщений: 59
o-o
так посмотрите десятый символ какой:
select unicode(substring(yourField,10, 1))

что-то непечатное там есть.



ошиблась, таки да - в конце каждого названия был переход на следующую строку... тот кто вносил данные - му...к.
всем спасибо:)
19 янв 17, 14:48    [20123047]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
AlesandraFioni
Member

Откуда: Київ
Сообщений: 59
iap
AlesandraFioni,

Конечно другое.
В качестве полей для сравнения строковые стараются не применять.
Разве что для уточнения какого-нибудь после выборки по числовым ключам.


знаю, для этого везде заведены айдишки, и они же и используются:) просто столкнулась случайно, интересно стало почему...
19 янв 17, 14:50    [20123063]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
aleks2
Guest
iap
AlesandraFioni,

Конечно другое.
В качестве полей для сравнения строковые стараются не применять.
Разве что для уточнения какого-нибудь после выборки по числовым ключам.


Ну ты загнул!
Настоящему "программисту" числовое поле не помеха.

А во всех прочих случаях у текстовых идентификаторов есть свои достоинства.
19 янв 17, 14:52    [20123070]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
автор
в конце каждого названия был переход на следующую строку

Это и происходит при копипасте строк из экселя.
19 янв 17, 15:02    [20123135]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
.. он может сохранять переводы строк, если при заполнении ячейки нажимать enter.
19 янв 17, 15:03    [20123139]     Ответить | Цитировать Сообщить модератору
 Re: сравнение по текстовому полю  [new]
AlesandraFioni
Member

Откуда: Київ
Сообщений: 59
Владислав Колосов
.. он может сохранять переводы строк, если при заполнении ячейки нажимать enter.


попробовала только что - нет, не сохранило.


Владислав Колосов
автор
в конце каждого названия был переход на следующую строку

Это и происходит при копипасте строк из экселя.


а вот из экселя - да, так и получилось.
19 янв 17, 15:21    [20123254]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить