sql
  • postgresql
  • 2014-03-10 3 views 1 likes 
    1

    У меня есть проблема в следующем выборе запроса.Некоторые строки порядка по столбцу равны нулю. Как сделать заказ по столбцу необязательным в этой ситуации

    select * 
    from ".$table2." a,purpose_details b 
    where b.purpose_code=a.purpose and purpose_code in(1,4,6,7,10) 
        and ((fromdt<='$frmdate'and todt>='$frmdate') 
         or (fromdt<='$frmdate' and todt='1111-11-11')) 
        and substr(a.appno,4,1)!=6 
    order by purpose_priority, 
         cast(substr(a.case_no,12,4) as int) ,cast(substr(a.case_no,4,1) as int), 
         cast(substr(a.case_no,5,7) as int),cast(substr(a.appno,12,4) as int) , 
         cast(substr(a.appno,4,1) as int),cast(substr(a.appno,5,7) as int)"; 
    

    проблема заключается в том, что строки в таблице2 могут иметь или не иметь значение appno. (т.е.) значение appno может быть NULL для некоторых строк.

    В связи с тем, что appno является одним из числа в порядке по столбцу, этот конкретный код возвращает недействительную ошибку ввода.

    Наконец, я хочу, чтобы выберите запрос, упорядочив столбцы с помощью appno, только если значение appno не равно.

    Примечание: в обеих ситуациях должно применяться положение order by для остальных столбцов.

    Просьба помочь мне разобраться. Заранее спасибо.

    ответ

    0

    Порядок заказа может определенно обрабатывать нулевые значения, но substr не может. Вы должны заменить ваш

    Substr (col, ... 
    

    С

    Case when col is null then null else substr (col, ... 
    
    +0

    Спасибо за ответ сэр. Но проблема все еще сохраняется. Но когда я удаляю cast() из предложения order by, он решает проблему. – Srini

    Смежные вопросы