Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как отконвертировать text в varchar(max) корректно?  [new]
reactor12
Guest
Мне достались по наследству БД. В которой используются поля типа text.
Есть веб приложение которое выводит информацию из таблиц.
В конце значения из поля типа text ставится не понятный значек, я определил что это zero (0).

Я попробовал я поменять text в varchar(max) но в итоге 0 в конце строки сохранился.

Вопрос- как можно малой кровью избавится от 0 в конце?
28 ноя 09, 15:06    [7991415]     Ответить | Цитировать Сообщить модератору
 Re: Как отконвертировать text в varchar(max) корректно?  [new]
iljy
Member

Откуда:
Сообщений: 8711
reactor12,

а как вы определили что это 0, и самое главное - почему вы решили, что это некорректно?

declare @t table (s text)
insert into @t values('test' + CHAR(0) + '***')
select *, '!' + cast(s as varchar(max)) + '!', DATALENGTH(s), cast(CAST(s as varchar(max)) as varbinary(max))
from @t

как видите поле text вполне может содержать символ с кодом 0. А уж как это обрабатывает клиент - проблема только клиента.
28 ноя 09, 15:14    [7991424]     Ответить | Цитировать Сообщить модератору
 Re: Как отконвертировать text в varchar(max) корректно?  [new]
iljy
Member

Откуда:
Сообщений: 8711
reactor12,

а убрать 0 в конце - как обычно
declare @t table (s varchar(max))
insert into @t values('test' + CHAR(0))
select *, '!' + s + '!', DATALENGTH(s), cast(s as varbinary(max))
from @t 

update @t set s = left(s, datalength(s) - 1)

select *, '!' + s + '!', DATALENGTH(s), cast(s as varbinary(max))
from @t 
28 ноя 09, 15:17    [7991429]     Ответить | Цитировать Сообщить модератору
 Re: Как отконвертировать text в varchar(max) корректно?  [new]
reactor12
Guest
Спасибо большое Твое решение помогло.

0 - определил на том же клиенте при помощи функции asc

Остальные строки выводятся нормально, поэтому решил убить 0 в базе а не крутить в клиенте ничего.

Еще раз Спасибо.
28 ноя 09, 15:27    [7991441]     Ответить | Цитировать Сообщить модератору
 Re: Как отконвертировать text в varchar(max) корректно?  [new]
помоги
Guest
Уважаемый reactor!
У меня задача такая же как и ваша.
Только мне не надо конвертировать в varchar(max), надо бы оставить text.

И предложенное решение не работает! с text не работают различные функции типо left()

Есть решение как оставив text убрать из конца zero?
17 дек 09, 21:28    [8083466]     Ответить | Цитировать Сообщить модератору
 Re: Как отконвертировать text в varchar(max) корректно?  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
left, может, и не работает - зато работает substring.
http://msdn.microsoft.com/en-us/library/ms187993.aspx
18 дек 09, 11:42    [8085506]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить