현재 특정 필드안에 아래처럼 여러 라인으로 내용이 들어가 있습니다.
app date public
get cc private
main app cc
컬럼이
name, data(검색할 대상)
일때
특정 문자가 포함된 부분을 검색하면서
해당 라인을 같이 표현 할 수 있는 방법이 있을까요?
예를들어 public 을 like 조건으로 검색할경우
data 필드 안에는 app date public 내용으 나왔으면 좋겠습니다.
추가적으로 내용안에 번호를 매겨 다른 필드라도 좋으니 name | 1 | app date public 이런식으로 표현될수 있는 방법도 있을까요?
WITH t AS ( SELECT 1 pk, 'name' nm, 'app date public' v UNION ALL SELECT 2, 'name2', 'get cc private' UNION ALL SELECT 3, 'name3', 'app1 date1 public get cc private main app cc public cc' ) , t1 AS ( SELECT pk, nm , 1 lv , CASE p WHEN 0 THEN v ELSE SUBSTRING(v, 1, p-1) END x , CASE p WHEN 0 THEN '' ELSE SUBSTRING(v, p+2, 9999) END v FROM (SELECT pk, nm, v, CHARINDEX(CHAR(13), v) p FROM t) a WHERE v LIKE '%public%' UNION ALL SELECT pk, nm , lv + 1 lv , CASE p WHEN 0 THEN v ELSE SUBSTRING(v, 1, p-1) END x , CASE p WHEN 0 THEN '' ELSE SUBSTRING(v, p+2, 9999) END v FROM (SELECT pk, nm, v, lv, CHARINDEX(CHAR(13), v) p FROM t1) a WHERE v != '' ) SELECT pk, nm, lv, x FROM t1 WHERE x LIKE '%public%' ORDER BY pk, lv ;