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

Откуда:
Сообщений: 118
Привет.

Есть проблема. Не могу вставить символ 'ó' (insert into tbl (a) values ('ó')).
Тип поля [a] - text.

Сторонней программой вставляется без проблем. А через Management Studio не получается.
3 июл 09, 17:33    [7375209]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36824
"Не получается" - это ошибка такая?
3 июл 09, 17:39    [7375236]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
paodzian
Member

Откуда:
Сообщений: 118
В таблице я вместо 'ó' вижу 'о'.
3 июл 09, 17:45    [7375259]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36824
paodzian
В таблице я вместо 'ó' вижу 'о'.
И какой программой вы "смотрите" в таблицу?
3 июл 09, 17:53    [7375298]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
paodzian
Member

Откуда:
Сообщений: 118
В первом сообщении написал. Management Studio.
3 июл 09, 17:55    [7375310]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
COLLATE какой?
Может, *_AI какой-нибудь, и серверу диакритические знаки безразличны?
3 июл 09, 19:12    [7375570]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
paodzian
Member

Откуда:
Сообщений: 118
Cyrillic_General_CI_AS
5 июл 09, 21:29    [7378355]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31219
paodzian
Cyrillic_General_CI_AS
Это как вы в Cyrillic_General_CI_AS собираетесь вставить символ 'ó' ???

В русском алфавите такого нет, в английском тоже нет.

В один байт нельзя впихнуть символ любого алфавита; коллейшен как раз и определяет, какие символы допустимы - в данном случае русские и английские (английские всегда).
6 июл 09, 09:59    [7379103]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Дело не в COLLATE, а в юникоде.
SET NOCOUNT ON;
USE tempdb;
IF OBJECT_ID(N'T','U') IS NOT NULL DROP TABLE T;
CREATE TABLE T(S NTEXT COLLATE Cyrillic_General_CI_AS);
INSERT T(S) VALUES(N'ó')
SELECT * FROM T;
6 июл 09, 10:44    [7379307]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31219
iap
Дело не в COLLATE, а в юникоде.
SET NOCOUNT ON;
USE tempdb;
IF OBJECT_ID(N'T','U') IS NOT NULL DROP TABLE T;
CREATE TABLE T(S NTEXT COLLATE Cyrillic_General_CI_AS);
INSERT T(S) VALUES(N'ó')
SELECT * FROM T;
Ну почему-же не в COLLATE?
create table test (s1 text collate Latin1_General_CI_AS, s2 text collate Cyrillic_General_CI_AS)
go
insert test values('ó', 'ó')
select * from test
go
drop table test 
Хотя, конечно, если нужно хранить символы из многих алфавитов, то юникод предпочтительней. Но в 2 раза больше места займёт.
6 июл 09, 10:50    [7379331]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
alexeyvg
iap
Дело не в COLLATE, а в юникоде.
SET NOCOUNT ON;
USE tempdb;
IF OBJECT_ID(N'T','U') IS NOT NULL DROP TABLE T;
CREATE TABLE T(S NTEXT COLLATE Cyrillic_General_CI_AS);
INSERT T(S) VALUES(N'ó')
SELECT * FROM T;
Ну почему-же не в COLLATE?
create table test (s1 text collate Latin1_General_CI_AS, s2 text collate Cyrillic_General_CI_AS)
go
insert test values('ó', 'ó')
select * from test
go
drop table test 
Хотя, конечно, если нужно хранить символы из многих алфавитов, то юникод предпочтительней. Но в 2 раза больше места займёт.
Чего-то этот пример у меня возвращает 'o' в обеих колонках
PRINT @@VERSION
Microsoft SQL Server 2008 (SP1) - 10.0.2710.0 (Intel X86)
Apr 7 2009 21:27:58
Copyright (c) 1988-2008 Microsoft Corporation
6 июл 09, 11:03    [7379425]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36824
iap
Чего-то этот пример у меня возвращает 'o' в обеих колонках
+1. Тоже десятка.
6 июл 09, 11:29    [7379599]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
create table test (s1 text collate Latin1_General_CI_AS, s2 text collate Cyrillic_General_CI_AS)
go
insert test values(N'ó', N'ó')
select * from test
go
drop table test 
вот так правильно :)
-------------------------------------
Jedem Das Seine
6 июл 09, 11:49    [7379757]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
paodzian
Member

Откуда:
Сообщений: 118
К сожалению нельзя менять тип поля.

Когда я вставляю в это поле символ 'ó' командами vbscript, в Management Studio я вижу 'Гі'. Когда я сохраняю из поля таблицы символ 'Гі' в файл там он становится 'ó'.

Я не понимаю, почему когда я вставляю в таблицу этот символ из Management Studio, он заменяется на 'o'.
6 июл 09, 11:52    [7379784]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31219
iap
Чего-то этот пример у меня возвращает 'o' в обеих колонках
PRINT @@VERSION
Microsoft SQL Server 2008 (SP1) - 10.0.2710.0 (Intel X86)
Apr 7 2009 21:27:58
Copyright (c) 1988-2008 Microsoft Corporation
PRINT @@VERSION
Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)
Mar 29 2009 10:11:52
Copyright (c) 1988-2008 Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.0 <X64> (Build 6001: Service Pack 1)
6 июл 09, 11:57    [7379830]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Maxx
create table test (s1 text collate Latin1_General_CI_AS, s2 text collate Cyrillic_General_CI_AS)
go
insert test values(N'ó', N'ó')
select * from test
go
drop table test 
вот так правильно :)
-------------------------------------
Jedem Das Seine
Действительно!
Чуднò это всё как-то!
6 июл 09, 11:58    [7379842]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
%)) я знал что ты оцениш))
иначе и у меня , как у всех

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Express Edition with Advanced Services on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-------------------------------------
Jedem Das Seine
6 июл 09, 12:18    [7379996]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31219
iap
Jedem Das Seine
Действительно!
Чуднò это всё как-то! [/quot]Наверное, ещё и SSMS сама что-то преобразует...
6 июл 09, 12:18    [7379997]     Ответить | Цитировать Сообщить модератору
 Re: insert иностранных символов  [new]
Денис Ильин
Member

Откуда: Железнодорожный
Сообщений: 242
конечно не в коллейт дело, коллейт - это только способ сортировки.
другой вопрос, что если там наложен primary key и уже есть такая запись, которая с точки зрения данного коллейт неотличима от вставляемой...
6 июл 09, 12:20    [7380011]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить