안녕하세요. MSSQL Full Text Search - CONTAINS 구문을 사용하고 있습니다.
태그 컬럼에서, AND OR 조건으로 조회가 필요하여 CONTAINS 구문을 사용하고 있는데
경우에 따라서 검색이 안되는 경우가 있어서 도움을 받고자 글을 남겼습니다..
변경 내용 추적은, Auto로 되어있습니다.
CASE는 아래와 같습니다.
/*
SQL 2012 Standard 64bit SP3 (11.0.6251.0)
*/
USE WORK
GO
------------------------------------------------------------------------
--CASE 1) 이메일 앞
------------------------------------------------------------------------
UPDATE dbo.테이블 SET 태그 = N'account:abc@efg.com,account:12345'
SELECT *
FROM dbo.테이블
WHERE CONTAINS (태그, N'account:abc@efg.com')
--조회 가능
SELECT *
FROM dbo.테이블
WHERE CONTAINS (태그, N'account:12345')
--조회 가능
------------------------------------------------------------------------
--CASE 2) 이메일 뒤
------------------------------------------------------------------------
UPDATE dbo.테이블 SET 태그 = N'account:12345,account:abc@efg.com'
SELECT *
FROM dbo.테이블
WHERE CONTAINS (태그, N'account:12345')
--조회 불가능
SELECT *
FROM dbo.테이블
WHERE CONTAINS (태그, N'account:abc@efg.com')
--조회 가능
------------------------------------------------------------------------
--CASE 3) 이메일 '.' 제외
------------------------------------------------------------------------
UPDATE dbo.테이블 SET 태그 = N'account:12345,account:abc@efgcom'
SELECT *
FROM dbo.테이블
WHERE CONTAINS (태그, N'account:12345')
--조회 가능
SELECT *
FROM dbo.테이블
WHERE CONTAINS (태그, N'account:abc@efgcom')
--조회 가능
------------------------------------------------------------------------
--CASE 4) 이메일만 조회
------------------------------------------------------------------------
UPDATE dbo.테이블 SET 태그 = N'account:abc@efg.com'
SELECT *
FROM dbo.테이블
WHERE CONTAINS (태그, N'account:abc@efg.com')
--조회 가능