2013-09-12 2 views

ответ

2

Вы должны изменить от типа VARCHAR на символ типа. Varchar всегда усекает пробелы, но оставляет левые пробелы ко всему пробелу, например, строку abc с 2 пробелами. Вы также можете использовать тип text для хранения цельной строки с пробелами.

TYPE   VALUE 
------------------------- 
varchar(10) 'abc' 
char(10)  'abc  ' <----------- 3 chars abc + 7 spaces 
text   'abc ' 

Ниже кода изменения столбца типа данных на символ (10)

alter table tst_table 
    modify col1 char(10) null 

Как documentation сказал

Вы не можете изменить столбец либо текст или тип данных изображения.


Еще одно решение заключается в использовании reverse функции. Например у вас есть таблица tab:

create table tab 
(
    var varchar(100)  
) 

и вставить данные должны быть:

insert into tab 
select reverse('abc ') 

если вы сделаете выбор

select var from tab 

вы увидите данные

' cba' 

so shou л.д. брать данные как этот

select reverse(var) from tab 

Но это будет работать только для строк, как 'abc ', но он не работает для строк ' abc' и ' abc '.

+0

parado проблема в моем случае, что мне нужно одно пространство «abc», но есть данные, имеющие разную длину, например «abcdef», поэтому, если я преобразую столбец в char (6), результатом будет «abcdef», что приемлемо, но для abc wil be 'abc', и это очень плохо. У тебя есть решение? – Moudiz

+0

@Moudiz Я думаю, что нет простого способа сделать это, почему вам нужно пространство после строки? Может быть, мы найдем другой путь? – Parado

+0

@Moudiz Я добавил к моему описанию ответа типа 'text', пожалуйста, подумайте об этом. – Parado

0

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

Подробнее о том, как разные типы данных обрабатывают конечные пробелы.

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36271.1550/html/blocks/blocks45.htm

+0

Micheal ссылка была запутанной, не могли бы вы отправить мне правильный номер – Moudiz

+0

Извините, что я установил ссылку. –

3

Вот как я решил свою проблему. В моем приложении java мне нужна колонка, содержащая "From " bla bla и колонку, содержащую "to " bla bla.
VARCHAR тип данных позволит устранить пробелы, для полукокса типа данных, если я назначен символ (5),
я несколько завершающих пробелов "to "

Эти пустые дополнительные пространства проблема. Как упоминал парадокс, я не могу изменить столбец, чтобы быть текстовым типом данных, поэтому я создал таблицу резервного копирования, после чего я удалил исходную таблицу. После его удаления я создал исходную таблицу из резервной копии, но столбец «text».

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

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