Вставить значение индекса в sql server varchar column

70
6

У меня есть таблица с двумя столбцами.

id: number, name: varchar (50)

Я хочу добавить значение кислорода (O2) в поле имени, 2 в качестве индекса. когда я вставляю, он не может сохранить его как значение индекса.

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

спросил(а) 2017-01-06T09:43:00+03:00 3 года, 9 месяцев назад
1
Решение
71

Лучшее решение - изменить столбец на nvarchar(50).

Если вы придерживаетесь varchar(50), базовый набор отображаемых символов зависит от вашего сопоставления. В общем случае путем сопоставления мы имеем в виду порядок сортировки, например, Ø сортируется вместе с O или как отдельная буква после Z, и является ли она раньше или позже Å. Но сопоставление также коррелирует с базовым набором символов (набор отображаемых символов). Попробуйте выполнить запрос:

select TABLE_CATALOG, TABLE_NAME, COLUMN_NAME,
DATA_TYPE, CHARACTER_SET_NAME,
COLLATION_NAME, COLLATIONPROPERTY(COLLATION_NAME, 'CodePage') as CODE_PAGE
from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME = N'name'

и обратите внимание на CHARACTER_SET_NAME, COLLATION_NAME и CODE_PAGE для вашего столбца. Что у тебя есть?

Я очень сомневаюсь, что это будет что-то, что может правильно 'O₂'.

Вы можете выбрать какое - либо соглашение, например, с использованием HTML -like конструкций, такие как 'O<sub>2</sub>', или TeX -like те, такими как 'O_2'.

ответил(а) 2017-01-06T13:25:00+03:00 3 года, 9 месяцев назад
42

Я думаю, что только ASCII и Extended ASCII разрешены в поле char/varchar. Но если вы используете nchar/nvarchar, тогда вы можете использовать любые символы.

ответил(а) 2017-01-06T10:16:00+03:00 3 года, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема