2016-06-28 3 views
0
LIKE ',%,%,' 

위 문장을 사용하여 기록을 남깁니다. 그러나 예상대로 작동하지 않습니다.어떤 종류의 기록이 남을까요?

내 쿼리입니다 -

SELECT 
CASE 
     WHEN row_id LIKE ',%,%,' 
      THEN 'A' 
     WHEN row_id NOT LIKE ',%,%,' 
      THEN '' 
     END 'AF' 
     FROM MyView WHERE row_id = '2464,2465,2466' 
ORDER BY 1 DESC 

예상 출력 - 점점 빈.

+1

귀하의'LIKE' 패턴이 _four_ 일치되는 요소를 '1,2,3,4'이지만, 당신의'row_id'는 세 개의 원소를 가지고 있고, 따라서 두 개의 콤마가 있습니다. –

+2

'', %, %, ''는' ', 2465,2466,' '와 같은 문자열을 찾습니다. –

+0

1,2,3처럼 row_id에 데이터가있는 곳을 쓰는 방법은? n? – Mukund

답변

1

이 같은 :

row_id LIKE ',%,%,' 

시작하고 쉼표로 끝나는 사이에 적어도 쉼표가 매 ROW_ID 일치합니다. 이 때문에 ROW_ID 이전 패턴과 일치하지 않기 때문에

WHERE row_id = '2464,2465,2466' 

항상 빈 집합을 반환 조항의

귀하의 질의.

1

row_id ', %, %'는 ,으로 시작하고 ,을 포함하고 ,으로 끝나는 문자열을 의미합니다.

, 또는 1 , 포함 된 문자열을 의미하는 경우,이 시도 : 쉼표로 구분 된 목록, 예를 들어,에서

SELECT 
CASE 
    WHEN row_id LIKE '%,%,%' 
      THEN 'A' 
    WHEN row_id NOT LIKE '%,%' 
      THEN '' 
    END 'AF' 
FROM MyView WHERE row_id = '2464,2465,2466' 
ORDER BY 1 DESC 
+0

row_id에 n 개의 값을 쉼표로 구분하여 지정할 수 있습니다. 그 패턴과 일치하면 A를 얻을 필요가 있습니다. – Mukund

+0

@Mukund 패턴은 : 쉼표가 포함되어 있지 않습니까? –