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

Откуда:
Сообщений: 2318
Ms SQL. В базе у двух таблиц collation . У таблицы-источника - Latin1_General_CI_AS, у таблицы куда вставляю данные - Latin1_General_BIN. В итоге вставляются ?????. Как можно обойти?
21 мар 12, 16:46    [12289698]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
iap
Member

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

у таблиц не бывает COLLATE.
Только у полей.
В запросе у поля можно прописать COLLATE явно
21 мар 12, 16:54    [12289763]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
mod
Member

Откуда:
Сообщений: 2318
Да у полей... Как прописать явно?
21 мар 12, 17:12    [12289935]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
Glory
Member

Откуда:
Сообщений: 104751
mod
Как прописать явно?

Руками так взять и прописать в запросе
21 мар 12, 17:15    [12289962]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
mod
Member

Откуда:
Сообщений: 2318
Руками явно прописал в запросе:
insert into tttepo(EPO_OBJECT,EVT_CODE,EVT_DESC,EPO_DATE,EPO_ASPECT,EPO_POINTTYPE,EPO_POINT,EPO_METHOD,EPO_LINE,EPO_VALUE,EPO_UOM) 
select epo_object collate Latin1_General_BIN,
cast (EVT_CODE as nvarchar) collate Latin1_General_BIN,
EVT_DESC collate Latin1_General_BIN,
EPO_DATE,
EPO_ASPECT collate Latin1_General_BIN,
EPO_POINTTYPE collate Latin1_General_BIN,
EPO_POINT,
EPO_METHOD collate Latin1_General_BIN,
EPO_LINE,
EPO_VALUE, 
EPO_UOM collate Latin1_General_BIN
from epo
- вставляются вопросы.
Можно без хамства? Я прошу помочь.
Collation:
EPO_OBJECT	Latin1_General_BIN
EVT_CODE NULL
EVT_DESC Latin1_General_BIN
EPO_DATE NULL
EPO_ASPECT Latin1_General_BIN
EPO_POINTTYPE Latin1_General_BIN
EPO_POINT NULL
EPO_METHOD Latin1_General_BIN
EPO_LINE NULL
EPO_VALUE NULL
EPO_UOM Latin1_General_BIN
21 мар 12, 17:42    [12290206]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
Glory
Member

Откуда:
Сообщений: 104751
mod
- вставляются вопросы.

Указание коллейшена не есть _конвертация_ символьных строк


mod
Можно без хамства?

А можно без тупых вопросов ? открыть хелп и узнать синтаксис, например
21 мар 12, 17:46    [12290246]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
iap
Member

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

какого типа поля как догадаться?
Почему одно из полей преобразуется в юникод?
21 мар 12, 17:52    [12290296]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
mod
Member

Откуда:
Сообщений: 2318
поля nvarchar в обеих таблицах
21 мар 12, 17:57    [12290341]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
mod
Member

Откуда:
Сообщений: 2318
Glory, спасибо за мудрый совет! Просто сразу прозрел!
21 мар 12, 17:58    [12290347]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
mod
Member

Откуда:
Сообщений: 2318
Тупо сгенерил скрипт создания таблицы. Удалил таблицу. Создал скриптом. Символы вставляются нормально. Collation тот же. Ms SQl FOREVER!
21 мар 12, 18:14    [12290467]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
iljy
Member

Откуда:
Сообщений: 8711
mod
поля nvarchar в обеих таблицах

Если поля ncarchar, то коллейшн влияет только на правила сортировки и сравнения. Так что че-то вы врете.
21 мар 12, 19:02    [12290783]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить данные из одной таблицы в другую, если у них разные collation?  [new]
Glory
Member

Откуда:
Сообщений: 104751
mod
Тупо сгенерил скрипт создания таблицы. Удалил таблицу. Создал скриптом. Символы вставляются нормально. Collation тот же. Ms SQl FOREVER!

А почему вопрос то про Collation-то бы был ?
В огороде бузина, а в Киеве дядька ?
21 мар 12, 19:08    [12290817]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить