2014-09-08 2 views
0

적절한 피드백을 사용자에게 보내기 위해 행의 여러 열 값을 검사하는 합법적/좋은 방법입니까?복수 열의 유효성 검사

select 
    (date_expires < now()) as expired, 
    (date_deleted is not null) as active 
    from sometable where row='foo'; 

그것은 나에게 굉장히 편리 보이지만 실제로 그것을 매우 보지 않았다 (나는 하나 개의 쿼리를 만들 수 있으며, 조건에 정확히 액세스하려고하는 행에 어떤 문제가 있는지를 사용자에게 경고 이런 식으로) 많이 볼 수없는 커다란 단점이 있습니다. 감사!

+1

이것은 완벽하게 괜찮습니다. 항상 이런 식으로합니다. 어떤 사람들은 명시 적으로 사용하고 'CASE'를 사용하는 것을 선호합니다. 다른 DBMS와는 더 이식성이있을 수 있다고 생각합니다. – Barmar

답변

1

당신의 방법은 작동합니다. 단지 별도의 컬럼을 돌려 줄뿐입니다. 한 열에 결과를 저장하려면 몇 가지 사례 문장 재미입니다.

select 
case when date_expires < now() then 'Inactive' 
else 'active' 
end as status 
from sometable where row='foo'; 

이렇게하면 비활성/활성 상태가 두 가지 값으로 표시됩니다. 난 그냥 다른 사람과 함께 갔다, 당신이 원하는 경우이 조건 '다음이 가치'시리즈를 넣을 수 있습니다.

+1

'date_expires' 만 검사하고'date_deleted'는 검사하지 않습니다. – Barmar

+0

다른 사람이 그 조건을 처리했다고 생각했지만, 당신 말이 맞습니다. – Twelfth

관련 문제