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

Откуда:
Сообщений: 50
Подскажите, пожалуйста, как сделать, чтобы в результате выполнения запроса убиралась первая цифра 0 , а не все ее вхождения в поле NumDigit

...
Replace(Cast(Titul.NumDigit as char(5)),'0',' ')+''+Titul.NumAlfa as '№',
...

но благодаря этой инструкции удаляются все нули из поля Numdigit в результате выполнения запроса...
18 сен 09, 15:24    [7679717]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
case substring(pole, 1, 1) when 0 then '  ' + substring(pole, 2, len(pole) - 1) else pole end
18 сен 09, 15:29    [7679757]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
iljy
Member

Откуда:
Сообщений: 8711
Виталий Сигов,

select case when charindex('0', x) != 0 then stuff(x,charindex('0',x),1,'') else x end
from(select '2222' x
	union all select '101010'
	union all select '1110'
)t

так?
18 сен 09, 15:30    [7679763]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Какого типа Titul.NumDigit? Если числового, то о каком лидирующем нуле идёт речь?
Если же строкового, то зачем его приводить к CHAR(5), не понимаю.
Для строкового Titul.NumDigit:
SELECT REPLACE(LTRIM(REPLACE(Titul.NumDigit,'0',' ')),' ','0')
FROM ...
18 сен 09, 15:39    [7679847]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
iap, у Вас так все изначальные пробелы станут нулями.
18 сен 09, 15:50    [7679942]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Le Peace
iap, у Вас так все изначальные пробелы станут нулями.
Наоборот, отрежутся и все лидирующие пробелы.
LTRIM-то на что, спрашивается?!

Если желательно их защитить, то сначала пробелы надо заменить на что-нибудь редкое (например, CHAR(1)), а в конце - заменить обратно.
18 сен 09, 16:05    [7680092]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
iljy
Member

Откуда:
Сообщений: 8711
iap
Le Peace
iap, у Вас так все изначальные пробелы станут нулями.
Наоборот, отрежутся и все лидирующие пробелы.
LTRIM-то на что, спрашивается?!

Если желательно их защитить, то сначала пробелы надо заменить на что-нибудь редкое (например, CHAR(1)), а в конце - заменить обратно.


SELECT REPLACE(LTRIM(REPLACE(Titul.NumDigit,'0',' ')),' ','0')

это заменит на '0' ВСЕ пробелы, которые были в строке. Не факт что это нужно
18 сен 09, 16:07    [7680118]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
iap
Le Peace
iap, у Вас так все изначальные пробелы станут нулями.
Наоборот, отрежутся и все лидирующие пробелы.
LTRIM-то на что, спрашивается?!

Если желательно их защитить, то сначала пробелы надо заменить на что-нибудь редкое (например, CHAR(1)), а в конце - заменить обратно.


SELECT REPLACE(LTRIM(REPLACE(Titul.NumDigit,'0',' ')),' ','0')

это заменит на '0' ВСЕ пробелы, которые были в строке. Не факт что это нужно
Ну, хорошо:
SELECT REPLACE(REPLACE(LTRIM(REPLACE(REPLACE(NumDigit,' ', CHAR(1)),'0',' ')),' ','0'), CHAR(1),' ')
FROM Titul
Надеюсь, в изначальной строке не встретится CHAR(1). Для надёжности можно применить и CHAR(0) + бинарный COLLATE.
18 сен 09, 16:23    [7680283]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
это заменит на '0' ВСЕ пробелы, которые были в строке.
Кстати, с трудом представляю, как в середине корректного строкового
представления числа может оказаться пробел.
18 сен 09, 16:25    [7680307]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
iap, а теперь Ваш вариант стал сложнее нашего :)
18 сен 09, 16:25    [7680309]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Le Peace
iap, а теперь Ваш вариант стал сложнее нашего :)
Всё! Сдаюсь!
18 сен 09, 16:29    [7680344]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить начальный нуль в запросе.  [new]
iljy
Member

Откуда:
Сообщений: 8711
iap
iljy
это заменит на '0' ВСЕ пробелы, которые были в строке.
Кстати, с трудом представляю, как в середине корректного строкового
представления числа может оказаться пробел.


я тоже с трудом, но тут и задача странная, потому что если это число - так привести его к типу int и лидирующие нули сами уйдут. Правда еще такой момент - ТС говорил про ПЕРВЫЙ 0, а не лидирующий. Короче варианты мы ему накидали - пусть выбирает, либо задачу уточнит.
18 сен 09, 16:34    [7680412]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить