|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.11.2012, 08:22 | #1 |
Форумчанин
Регистрация: 05.07.2009
Сообщений: 209
|
Минимальное и максимальное значение
Здравствуйте! Подскажите пожалуйста: составляю запрос на SQL Server. Выбираю данные из таблицы, в которой есть поле "Операции". Оно содержит в себе информацию о технологических операциях, с какой по какую выполнялись. Имеет примерно следующий вид: 001-010 (значит выполнялись операции с 001 по 010). Номера операций могут быть и не трехзначными, например 001,02-020. В общем смысл, что до тире идет первая операция, а после - конечная. Как мне можно их выделить в отдельные поля "Первая операция" и "Последняя операция"?
|
01.11.2012, 09:27 | #2 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Найти индекс дефиса в строке, а потом вытащить из строки то что ДО и ПОСЛЕ него в отдельные переменные
Благодарить в репутацию. Проклинать — туда же
|
01.11.2012, 09:48 | #3 |
Форумчанин
Регистрация: 05.07.2009
Сообщений: 209
|
Спасибо, попробовала вот так:
Код:
Server: Msg 536, Level 16, State 3, Line 1 Invalid length parameter passed to the substring function. Не понимаю, что здесь не так. |
01.11.2012, 09:51 | #4 | |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Цитата:
Вы пытаетесь выцепить больше символов, чем осталось в строке. Отсюда и ошибка
Благодарить в репутацию. Проклинать — туда же
|
|
01.11.2012, 09:54 | #5 |
Форумчанин
Регистрация: 05.07.2009
Сообщений: 209
|
http://www.sql-tutorial.ru/ru/book_s..._function.html вот здесь я нашла такой вариант использования substring и Len, значит это неверно?
|
01.11.2012, 09:56 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
substring(Oper, charindex('-',Oper)+1, Len(Oper)-charindex('-',Oper))
лучше так RIGHT(Oper,Len(Oper)-charindex('-',Oper)) а еще лучше в базе держать нормальные поля и не мучаться потом с парсингом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
01.11.2012, 10:00 | #7 |
Форумчанин
Регистрация: 05.07.2009
Сообщений: 209
|
Спасибо за помощь! Вот как раз и делаю нормальные поля из ненормальных
|
01.11.2012, 10:04 | #8 |
Форумчанин
Регистрация: 05.07.2009
Сообщений: 209
|
а нет.... опять такую же ошибку выдает....
|
01.11.2012, 10:06 | #9 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Надо запрос целиком смотреть
Благодарить в репутацию. Проклинать — туда же
|
01.11.2012, 10:07 | #10 |
Форумчанин
Регистрация: 05.07.2009
Сообщений: 209
|
select Cex_code, Ych_Code, Zona_Code, NomNar_Det, PutDet, ObozDet, NaimDet, Prizvar, PrizGr, Data, Kol, BarCode_Det, Oper, EdNorm,
left(Oper,charindex('-', Oper)-1) as NOP_min, substring(Oper, charindex('-',Oper)+1, (Len(Oper)-charindex('-',Oper))) as NOP_max, sum(convert(decimal(13,4),Trud/Power(10,(case when EdNorm Is Null Or EdNorm=4 then 0 else EdNorm end)))*Kol) as Trud from СО_Наряды where Cex_Code='54' and Data>='27.09.2012' and Data<= '26.10.2012' group by Cex_code, Ych_Code, Zona_Code, NomNar_Det, PutDet, ObozDet, NaimDet, Prizvar, PrizGr, Data, Kol, BarCode_Det, Oper, EdNorm, left(Oper,charindex('-', Oper)-1), substring(Oper, charindex('-',Oper)+1, (Len(Oper)-charindex('-',Oper))) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Минимальное и максимальное значение в массиве. С++ | Enigmya | Помощь студентам | 3 | 17.10.2011 16:07 |
Нужно вывести максимальное и минимальное значение из матрицы | Aleksey1924 | Помощь студентам | 8 | 25.04.2011 12:46 |
максимальное и минимальное значение заданных чисел | солнышко777 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 28.09.2010 16:29 |
Определить максимальное/минимальное значение функции y=f(x) | astrozombie | Помощь студентам | 2 | 16.02.2009 13:52 |