2011-10-19 4 views
0

같은 postresql 쿼리가 있습니다 :"CASE WHEN"문으로 구성된 Postgresql 쿼리에서 데이터를 검색하는 방법은 무엇입니까?

SELECT * , u.image AS image_name, k.id AS cat_id, 
    CASE WHEN s.web_site!="" THEN s.web_site 
    ELSE 'Not available' END AS v_site 
FROM users u 
LEFT JOIN comments s ON s.user_id = u.id WHERE u.id = '1547' 

쿼리 결과 :

users  | name | v_site 
----------+---------+--------------- 
ali  | hassan | www.domain.com 
turqut | sandra | www.somesite.com 
emil  | azizov | www.website.com 

u는 내가 www.domain.com 같은 웹 사이트 이름을 참조하십시오. 그러나 나는 HTML 하이퍼 링크 태그를 가지고 그것을 얻고 싶다 : < a href = 'www.domain.com'> www.domain.com </a >

어떻게 할 수 있습니까?

+0

NULL web_site는 어떤가요? – ssedano

+0

'! = '''는'NOT NULL'과 같지 않습니까? – Someone

+1

@EmilAzizov : 아니요. 왜냐하면 ''도 NULL이 아니기 때문입니다. 따라서 IS NOT NULL 열은 web_site 열에 길이가 0 인 문자열을 포함하는 모든 행을 포함합니다. –

답변

6

!= ""은 잘못된 SQL 구문입니다. 문자열은 단일 qutoe로 구분됩니다.

SELECT *, 
     u.image AS image_name, 
     k.id AS cat_id, 
     CASE 
     WHEN s.web_site != '' THEN '<a href="'||s.web_site||'">'||s.web_site||'</a>' 
     ELSE 'Not available' 
     END AS v_site 
FROM users u 
LEFT JOIN comments s ON s.user_id = u.id WHERE u.id = '1547' 
+0

큰 해답을 가져 주셔서 감사합니다. 내가 확인했지만 0 대신에 somesite이 표시됩니다. – Someone

+0

해당 열에 대해 '0'값을 얻는다는 의미입니까, 아니면 0 행을 의미합니까? –

+0

그 열의 값이 0이라는 것을 의미합니다. – Someone

관련 문제