2016-09-14 10 views
0

В моей таблице product У меня есть столбец: product_name с типом VARCHAR и размером 100: product_name varchar(100)Как определить столбцы VARCHAR для поддержки специальных символов?

Когда я пытаюсь вставить имя со специальными символами, как этот:

°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%°°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä° 

я получаю эту ошибку :

ERROR : org.hibernate.util.JDBCExceptionReporter:78 : logExceptions() : Error for batch element #1: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=3.57.82 

В моем столбце product_name может быть 100 символов, для меня «â» - 1 символ.

Есть ли в DB2 другой тип (кроме varchar), чтобы установить его для столбца product_name?

, таким образом, я могу выполнить этот запрос:

alter table product alter column product_name set data type otherType(100); 
+0

Какая ОС и с какой версией DB2? Персонажи и байты - это две разные меры. Решение зависит от ответов на мой вопрос или просто увеличивает «100». – MichaelTiefenbacher

+0

Возможный дубликат [хранения данных unicode DB2 VARCHAR] (http://stackoverflow.com/questions/7385183/db2-varchar-unicode-data-storage) –

+0

@MichaelTiefenbacher, я использую DB2 10.5.5 – junior

ответ

1

проверьте параметр конфигурации базы данных

STRING_UNITS 

. Вы можете использовать его для переключения длины байта по умолчанию на длину символа. Этот средний символ (100) будет по умолчанию интерпретироваться DB2 как 100 байт. Поскольку chracter в базе данных unicode может занимать 1-4 байта, для хранения 100 символов недостаточно 100 байт. После переключения на STRING_UNITS = CODEUNITS32 вы получаете 100 символов при определении столбца varchar (100). Так что вам не нужен другой тип, а другой параметр db cfg.

+0

@junior - - Обратите внимание, что это по сути эквивалентно объявлению 'product_name' как' varchar (400 октетов) ', и это повлияет на все столбцы таблицы и переменные PL PLL в базе данных. Это не проблема с столбцами «VARCHAR», потому что они не будут выделять больше места, чем нужно, но столбцы «CHAR» _will_ выделяют в четыре раза больше места. – mustaccio

 Смежные вопросы

  • Нет связанных вопросов^_^