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

Откуда:
Сообщений: 681
Подскажите, как убрать цифры после точки? Числовое значение в varchar(20). В поле есть значения, как типа '10.23450' так и 'нет значения'. так вот как сделать значения типа '10.23450' в '10', а значения 'нет значения' не трогать?
11 дек 09, 09:35    [8050590]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4889
beaver06
Подскажите, как убрать цифры после точки? Числовое значение в varchar(20). В поле есть значения, как типа '10.23450' так и 'нет значения'. так вот как сделать значения типа '10.23450' в '10', а значения 'нет значения' не трогать?

Case + Cast ну или функции работы со строкой
11 дек 09, 09:43    [8050620]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
declare @t varchar(20)
set @t = '10.23450'
SELECT cast(ROUND(CAST(@t as numeric(18,4)),0) as int)
SELECT SUBSTRING(@t,1,charindex('.',@t)-1)
11 дек 09, 09:46    [8050634]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
beaver06
Member

Откуда:
Сообщений: 681
--__Александр__--
declare @t varchar(20)
set @t = '10.23450'
SELECT cast(ROUND(CAST(@t as numeric(18,4)),0) as int)
SELECT SUBSTRING(@t,1,charindex('.',@t)-1)


Спасибо
11 дек 09, 09:49    [8050651]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT LEFT('10.23450', CHARINDEX('.','10.23450'+'.')-1);
11 дек 09, 09:49    [8050653]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
beaver06
Member

Откуда:
Сообщений: 681
iap
SELECT LEFT('10.23450', CHARINDEX('.','10.23450'+'.')-1);

еще лучше
11 дек 09, 09:52    [8050665]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
--__Александр__--
declare @t varchar(20)
set @t = '10.23450'
SELECT cast(ROUND(CAST(@t as numeric(18,4)),0) as int)
SELECT SUBSTRING(@t,1,charindex('.',@t)-1)
А если так?
declare @t varchar(20)
set @t = '10'
SELECT SUBSTRING(@t,1,charindex('.',@t)-1)
Или так:
declare @t varchar(20)
set @t = 'нет значения'
SELECT cast(ROUND(CAST(@t as numeric(18,4)),0) as int)
SELECT SUBSTRING(@t,1,charindex('.',@t)-1)
?
11 дек 09, 09:52    [8050668]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Зпрос выглядит так:
UPDATE Table
     SET T = SUBSTRING(T,1,charindex('.',T)-1)
WHERE charindex('.',T)>=2
11 дек 09, 09:55    [8050688]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
SELECT REVERSE(PARSENAME(REVERSE(a),1))
FROM (SELECT '10.23450' a union all SELECT '3450' a union all select 'нет значения') r
11 дек 09, 09:58    [8050698]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
--__Александр__--

UPDATE Table
     SET T = PARSENAME(T,2)
WHERE charindex('.',T)>=2
11 дек 09, 10:00    [8050708]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Коллеги, а с чего вы решили, что сначала выполняется выражение в WHERE, а потом - в SELECTе?
Это очень известная фишка оптимизатора - он может захотеть сделать наоборот!
11 дек 09, 10:08    [8050760]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
UPDATE Table
    SET T = SUBSTRING(T,1,charindex('.',T)-1)
 WHERE T LIKE ('_%.%')
11 дек 09, 10:18    [8050822]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
iap
Коллеги, а с чего вы решили, что сначала выполняется выражение в WHERE, а потом - в SELECTе?
Это очень известная фишка оптимизатора - он может захотеть сделать наоборот!

А какая разница?
11 дек 09, 10:19    [8050827]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
ветерочек
iap
Коллеги, а с чего вы решили, что сначала выполняется выражение в WHERE, а потом - в SELECTе?
Это очень известная фишка оптимизатора - он может захотеть сделать наоборот!

А какая разница?
Попробуйте
SELECT SUBSTRING('10',1, charindex('.','10')-1)
11 дек 09, 10:22    [8050850]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать цифры после точки?  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
iap
ветерочек
iap
Коллеги, а с чего вы решили, что сначала выполняется выражение в WHERE, а потом - в SELECTе?
Это очень известная фишка оптимизатора - он может захотеть сделать наоборот!

А какая разница?
Попробуйте
SELECT SUBSTRING('10',1, charindex('.','10')-1)

да
SELECT SUBSTRING('10',1, ISNULL(NULLIF(charindex('.','10'),0),LEN('10')+1)-1)
поэтому в таких случаях PARSENAME использую
11 дек 09, 10:39    [8050994]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить