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

Откуда: Тверь
Сообщений: 882
есть поле model varchar,могут быть числа и текст, нужно выбрать значения с числами, такие что
число первого разряда четное, последнего не четное и перове меньше второго,
выдается ошибка преобразования типов.

Хотя, первый внутренний запрос однозначно возвращает только значения с числами.В чем прикол, видимо я чего-то не знаю про преобразования, подскажите а

select model,cast(round(m1*m2,0)as int)
from 
    (Select model,cast(m1 as float)as m1,cast(m2 as  float)as m2
     from 
         (select model,substring(model,1,1)as m1,substring(model,len(model),1)as m2
          from product
          where('2468'like '%'+substring(model,1,1)+'%')and
                  ('13579'like '%'+substring(model,len(model),1)+'%')
          )as d
     where m1<m2      
     )as t
16 сен 11, 09:11    [11284987]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
PG81,

почему Вы считаете, что вычисления в SELECT происходят после проверки условия в WHERE,
а не наоборот?
16 сен 11, 09:16    [11284999]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
PG81
Member

Откуда: Тверь
Сообщений: 882
select model,cast(round(m1*m2,0)as int)

from 
    (Select model,cast(m1 as float)as m1,cast(m2 as  float)as m2
     from 
         (select model,substring(model,1,1)as m1,substring(model,len(model),1)as m2
          from product
          where('02468'like '%'+substring(model,1,1)+'%')and
                  ('13579'like '%'+substring(model,len(model),1)+'%')
          )as d
     where m1<m2      
     )as t


0 в четных забыл
16 сен 11, 10:07    [11285290]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
PG81
select model,cast(round(m1*m2,0)as int)

from 
    (Select model,cast(m1 as float)as m1,cast(m2 as  float)as m2
     from 
         (select model,substring(model,1,1)as m1,substring(model,len(model),1)as m2
          from product
          where('02468'like '%'+substring(model,1,1)+'%')and
                  ('13579'like '%'+substring(model,len(model),1)+'%')
          )as d
     where m1<m2      
     )as t


0 в четных забыл
Это неважно в данной теме.
16 сен 11, 10:30    [11285461]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
PG81,

Вас спасёт только CASE
16 сен 11, 10:31    [11285467]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> Хотя, первый внутренний запрос однозначно возвращает только значения с числами

это проверялось, то есть?
16 сен 11, 10:32    [11285476]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Кстати говоря, m1 и m2 могут быть только десятичными цифрами.
Зачем тут тип FLOAT?
16 сен 11, 10:49    [11285612]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
PG81
есть поле model varchar,могут быть числа и текст, нужно выбрать значения с числами, такие что
число первого разряда четное, последнего не четное и перове меньше второго,
выдается ошибка преобразования типов.

Хотя, первый внутренний запрос однозначно возвращает только значения с числами.В чем прикол, видимо я чего-то не знаю про преобразования, подскажите а

select model,cast(round(m1*m2,0)as int)
from 
    (Select model,cast(m1 as float)as m1,cast(m2 as  float)as m2
     from 
         (select model,substring(model,1,1)as m1,substring(model,len(model),1)as m2
          from product
          where('2468'like '%'+substring(model,1,1)+'%')and
                  ('13579'like '%'+substring(model,len(model),1)+'%')
          )as d
     where m1<m2      
     )as t


Вот это ад! Извиняюсь, мимопроходил.
16 сен 11, 11:50    [11286260]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Так надо?
SELECT model
, CAST(CASE WHEN model LIKE'[02468]%'THEN LEFT (model,1) END AS INT)
* CAST(CASE WHEN model LIKE'%[13579]'THEN RIGHT(model,1) END AS INT)
FROM product
WHERE model LIKE'[02468]%[13579]';
16 сен 11, 12:04    [11286444]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
iap
Так надо?


Так не надо, а надо задачи с sql-ex самостоятельно решать. Это, ессесно, реплика к PG81 а не к iap.
16 сен 11, 12:37    [11286823]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SamMan
iap
Так надо?


Так не надо, а надо задачи с sql-ex самостоятельно решать. Это, ессесно, реплика к PG81 а не к iap.
Я на том сайте не был ни разу. Надеюсь, это не преступление?
Может, прикрыть SQL.ru? Ведь любой вопрос может оказаться оттуда.
Назначили бы специального модератора, чтобы отслеживал.
16 сен 11, 12:54    [11286984]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
iap
Может, прикрыть SQL.ru? Ведь любой вопрос может оказаться оттуда.


Не надо. Ответственность за самостоятельное решение задачи (и не вынесение вопросов по ней на форум) лежит на спрашивающем, а не на отвечающем. Так что все вопросы могут быть только у PG81 к PG81-у же. Зачем просить решить задачу предназначенную для проверки твоих знаний - не понятно. Ну оценит sql-ex как другие владеют T-SQL - интересно это?
16 сен 11, 12:59    [11287044]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
PG81
Member

Откуда: Тверь
Сообщений: 882
SamMan,

Я решаю задачи не только для проверки своих знаний, но для того чтобы узнать что-то новое, и если не могу решить, пытаюсь найти решение. Что уже спросить нельзя, если я действитеьлно не знаю, в чем проблема?

Озверин,

действительно запрос корявый, но это он уже стал таким после выяснения причины, в чем же дело и попытки найти подход к правильному решению.


Да и потом никто тут не заставляет отвечать на вопросы, каждый для себя все решает сам.
16 сен 11, 15:17    [11288631]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
Glory
Member

Откуда:
Сообщений: 104751
PG81
Что уже спросить нельзя, если я действитеьлно не знаю, в чем проблема?

Пробоема в том, что вы наверное не читали правил сайта sql-ex насчет публикации задач и решений
16 сен 11, 15:20    [11288667]     Ответить | Цитировать Сообщить модератору
 Re: математические операции со строкой из чисел не идут почему-то  [new]
PG81
Member

Откуда: Тверь
Сообщений: 882
Glory,

ладно ничего, страшного, я сам нашел решение еще до того как мне успели ответить
16 сен 11, 15:41    [11288914]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить