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

Откуда:
Сообщений: 31
Всем добрый день!
Помогите разобраться с проблемой!
Задача такова: необходимо обьеденить 3 столбца в один по определенному условию(столбцы еще и разного формата):
например

___________Исходные данные__________________________Должно получиться
N ____ Index_ ____ zTh ____ Th ____ Th_error___ | ____Union_Th
1 ____ Почва___________ 1190000____83000___|____1190000±83000
2 ____ Почва____________261000____19000____|____261000±19000
3 ____ Воздух____ < _____0.001______________|____<0.001
4 ____ Вода_____________450________________|____450
.......

N           - int
Index_    - nvarchar(50)
zTh        - nvarchar(1)
Th         - float
Th_error - float


Делаю так:

select
N, Index_, zTh, Th, Th_error, 
 case 
      When zTh is NULL then 
		case When Th_error is NULL then CAST( Th as Varchar(15)) 
		else CAST( Th as Varchar(15))+'±'+CAST( Th_error as Varchar(15))end
      else (zTh + CAST(Th as Varchar(15))) end AS Union_Th, 
  FROM [DataBaseIRSE].[dbo].[Soil]


Впринципе все работает верно НО! Вместо например: 1190000±83000 получается 1.19e+006±83000
Как избавится мне от этой 'e'?
Пробывал CAST( Th as Varchar(15) [/green] и convert(varchar(15),Th)
Может есть другой способ преобразования?
21 ноя 12, 15:28    [13508196]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Используйте точные типы, numeric к примеру.
21 ноя 12, 15:32    [13508236]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Валерыч
Member

Откуда:
Сообщений: 31
Гавриленко Сергей Алексеевич
Используйте точные типы, numeric к примеру.

Это если целые числа! а как быть с дробными, просто в этой колонке может находиться и десятичное значение например 12,008.?
22 ноя 12, 07:26    [13511086]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Валерыч
Member

Откуда:
Сообщений: 31
Numeric и Decimal не подходит так как после запятой может быть нефиксированное колличество знаков Numeric(18,разное кол-во знаков) - а в нашей работе это имеет большое значение, и преобразование str-тоже не подходит
22 ноя 12, 08:58    [13511286]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Валерыч
Numeric и Decimal не подходит так как после запятой может быть нефиксированное колличество знаков Numeric(18,разное кол-во знаков) - а в нашей работе это имеет большое значение, и преобразование str-тоже не подходит
Вы храните важные числа в неточном типе данных? O_o
22 ноя 12, 09:53    [13511510]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Валерыч
Numeric и Decimal не подходит так как после запятой может быть нефиксированное колличество знаков Numeric(18,разное кол-во знаков) - а в нашей работе это имеет большое значение, и преобразование str-тоже не подходит

Тогда почему вы хотите отображать как раз фиксированное число знаков ?
1.19e+006±83000 - это стандарт отображения чисел с плавающей точкой
22 ноя 12, 10:23    [13511607]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Валерыч
Member

Откуда:
Сообщений: 31
Это показан один из примеров, так как проблема именно с этими значениями!
Эти значения в БД заливаются автоматом с прибора! Могут быть 9000000 и 9,0099
22 ноя 12, 11:34    [13511933]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Валерыч
Это показан один из примеров, так как проблема именно с этими значениями!
Эти значения в БД заливаются автоматом с прибора! Могут быть 9000000 и 9,0099

Это ваша проблема
научный формат отображения чисел с плавающей точкой - это стадарт
22 ноя 12, 11:38    [13511962]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Валерыч
Member

Откуда:
Сообщений: 31
тогда подскажите пожалуйста как мне поступить
22 ноя 12, 12:09    [13512148]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Валерыч
Member

Откуда:
Сообщений: 31
Подскажите пожалуйста как определить есть ли знаки после запятой, (чет я не пойму как использовать функцию MOD в sqlserver)
22 ноя 12, 12:14    [13512178]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Валерыч
тогда подскажите пожалуйста как мне поступить

Решить
- какой будет общая длина числового типа
- сколько будет знаков после запятой
22 ноя 12, 12:14    [13512180]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Валерыч
Подскажите пожалуйста как определить есть ли знаки после запятой, (чет я не пойму как использовать функцию MOD в sqlserver)

Что за функция MOD? Если остаток от деления, то это символ процента:
select 5%2, 11%3

Если вы хотите выделить дробную часть числа, то примерно так:
declare @x float;
set @x = 12.3456;
select @x - floor(@x);
22 ноя 12, 12:30    [13512308]     Ответить | Цитировать Сообщить модератору
 Re: Объеденение столбцов разных типов  [new]
Валерыч
Member

Откуда:
Сообщений: 31
а вот как это делается!
Спасибо!
22 ноя 12, 13:05    [13512635]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить