MSSQL 필드안의 쿼리 조회 방법 문의 0 3 2,085

by 아이스베어 [SQL Query] Query MSSQL filed serch [2023.01.25 11:31:34]


현재 특정 필드안에 아래처럼 여러 라인으로 내용이 들어가 있습니다.

app date public

get cc private

main app cc

 

컬럼이

name, data(검색할 대상)

일때

특정 문자가 포함된 부분을 검색하면서

해당 라인을 같이 표현 할 수 있는 방법이 있을까요?

 

예를들어 public 을 like 조건으로 검색할경우

data 필드 안에는 app date public 내용으 나왔으면 좋겠습니다.

추가적으로 내용안에 번호를 매겨 다른 필드라도 좋으니 name | 1 | app date public 이런식으로 표현될수 있는 방법도 있을까요?

by pajama [2023.01.25 13:02:32]

한필드에 개행문자 포함해 여러줄의 데이터가 들어가 있는건가요? 아니면 한줄의 데이터가 여러건 들어간건지요?

 name | 1 | app date public  << 이 내용은 '|' 문자 포함해 한 필드로 표시하시려는 건지요?


by 아이스베어 [2023.01.25 15:04:24]

한필드안에 여러줄의 데이터가 들어있습니다.

결과를 필드별로 예시로 적은 부분입니다.


by 마농 [2023.01.25 13:46:52]
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
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입