본문 바로가기
DataBase/mssql

[MSSQL] 컬럼 검색하기

by 노랑파랑 2023. 7. 5.
반응형

 

특정 컬럼에 하나의 단어 검색 로직

--입력받을 파라미터
DECLARE @str NVARCHAR(MAX)

SELECT *
FROM table
WHERE column LIKE '%'+@str+'%'

 

 

특정 컬럼에 입력 단어들을 검색하는 로직

--입력받을 파라미터
DECLARE @str NVARCHAR(MAX)

SELECT *
FROM table
WHERE column LIKE (SELECT '%' + STRING_AGG(value, '%') +'%' 
                   FROM STRING_SPLIT(@str,',')
  • 입력 단어 모두 특정 컬럼에 존재해야 한다.

 

여러 컬럼에 입력 단어들을 검색하는 로직

--입력받을 파라미터
DECLARE @str NVARCHAR(MAX)

SELECT *
FROM table
WHERE (
		(SELECT sum(srch.cnt) 
         FROM (
         	SELECT (CHARINDEX(value, qna.ti) 
            		+ CHARINDEX(value, qna.cntnt)
					+ CHARINDEX(value, mbr.membr_nm) 
                    + CHARINDEX(value, qna.non_membr_nm)) AS cnt 
            FROM STRING_SPLIT(@str,',')
         ) AS srch)
       ) > 0
  • 입력 단어 중 어느 컬럼이나 존재할 겨우 모두 검색

 

참고

* 컬럼 검색 시 LIKE문이 좋은지 CHARINDEX등이 더 퍼포먼스가 좋은지는 여러 의견이 있는것 같다.

* 해당 로직은 실행계획을 확인 하지 않았으므로 index 사용 여부도 알 수 없다. 

반응형