반응형
특정 컬럼에 하나의 단어 검색 로직
--입력받을 파라미터
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 사용 여부도 알 수 없다.
반응형
'DataBase > mssql' 카테고리의 다른 글
[MSSQL] STRING_SPLIT 입력 순서대로 자르기 (0) | 2023.07.07 |
---|---|
MSSQL : FORMAT함수 (0) | 2023.06.07 |
CONVERT, FORMAT함수 : 날짜(DATE) 포맷 변환 (0) | 2023.06.02 |
SQL Server의 OUTPUT 절: 데이터 변경 작업의 결과 추적 및 활용 (0) | 2023.05.23 |
MSSQL DATEDIFF 함수를 활용한 날짜 간격 계산 (1) | 2023.05.19 |