Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
Добрый день.
Есть такой вопрос.
Нужно взять агрегирующую функцию от текстового представления. Есть таблица T и столбец с такими данными. Надо их как то привести к численному что-ли...
SELECT MAX( food ) FROM T...
select avg(food) from T
Здесь food = '1T'
food = '2T' и вообще может быть вида food = 'XT' Мне надо сравнить , взять агрегированные значения по X . Что делать - может есть функция такая или может как-то отщепить T и сравнивать по X
25 авг 11, 21:53    [11181515]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
Edkonst2008
Member

Откуда:
Сообщений: 503
ned help,
Регулярные выражения + cast посмотрите.
25 авг 11, 21:56    [11181522]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
iljy
Member

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

http://msdn.microsoft.com/en-us/library/ms181984.aspx
25 авг 11, 22:03    [11181536]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
ОК спасибо
25 авг 11, 22:07    [11181546]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
Но что -то я не понимаю все равно как это сделать. Может не правильно делаю. Кто знает напишите как надо. Справочникмне сегодня уже не поможет
Есть число оно в тектовом формате(varchar) его надо загнать в формат какой? я тоже не знаю. Очевидно это должны быть целые положительные числа real - возможно
cast(max(TX)as real - получаю Error converting data type varchar to real.
25 авг 11, 23:48    [11181862]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
ned help,
DECLARE @place CHAR(10)='4b'
SELECT CAST(SUBSTRING(@place,1,LEN(@place)-1) AS INT) place
25 авг 11, 23:55    [11181881]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
kDnZP,

Ага , работает спасибо
25 авг 11, 23:59    [11181887]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
kDnZP,

Нет все равно не то. Смотрите на вешм примере получается целое число 4. А мне нужно что бы получилось число 4b. Даже если подкрутить вашу формулу по моему не получается
SELECT CAST(SUBSTRING(@place,2,LEN(@place)0) AS INT) place - в том то и дело что отрывать мы будем 0 знаков и надо что-бы 4b как -то стало числом, если это возможно конечно
Вот что пишет
Ошибка преобразования значения varchar "2x " в тип данных int.
Вообщем то тоже самое что и у меня.
Может так нельзя сделать?
26 авг 11, 00:27    [11181935]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
ned help,

оказвается отщепить не помогает
26 авг 11, 00:30    [11181943]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
ned help, а 2х это сколько и в какой системе счисления?
26 авг 11, 00:34    [11181952]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
kDnZP,
Есть TX -
T - это у нас русское народное число (положительное, целое)
X - это просто характеристика. Наверно ее нужно просто как знак воспринять или константу не знаю
И я тоже думал что на x можно сократить и сравнивать / агрегировать только числа - как вы собственно и написали. Но нет надо что бы и среднее и мак мин выводилось в формате max(TX) и тд
26 авг 11, 00:39    [11181961]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
ned help,

2x - это две характристики ну например 2 метра
26 авг 11, 00:41    [11181963]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
ned help,

Может сделать канкатенацию строк и прицепить этот x к числу да и все?
26 авг 11, 00:54    [11181986]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
ned help
ned help,

Может сделать канкатенацию строк и прицепить этот x к числу да и все?

Именно так.
26 авг 11, 01:28    [11182028]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
Ну что) кто уже догадался как тут сделать канкатенацию и прицепить x - характеристика к этому выражению так сказать
SELECT CAST(SUBSTRING(@place,2,LEN(@place)0) AS INT) place - это будет T - натуральное целое число >0
26 авг 11, 23:51    [11188443]     Ответить | Цитировать Сообщить модератору
 Re: как текстовую константу привести к типу данных от которого можно брать агр значение  [new]
ned help
Guest
У меня есть (SELECT (max(LEFT(value, CHARINDEX('x', value) -1)))+'x' FROM PC )as value
Заметим что здесь отбираются значения нужного текстового формата. То есть до определенного ищет x затем один символ убирает
Также добалена канкатенация с 'x'.
Проблема . Не получается тектовые еще значения преобразовать в числовые 'x'. мешает . Как это сделать ведь его можно наверно и после поставить. А то ошибку выдает.
27 авг 11, 01:40    [11188591]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить