숫자와 문자 각각 추출


설명 : strAlphaNumeric 에 있는 표현 값을 strAlpha(문자)와 strAlphaNumeric(숫자)로 나눠서 출력


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DECLARE @strAlphaNumeric varchar(10)
DECLARE @intAlpha INT 
DECLARE @strAlpha varchar(10)

SET @strAlphaNumeric = 'Ww00004'

SET @intAlpha = Patindex('%[^0-9]%', @strAlphaNumeric) 

SET @strAlpha = ''

BEGIN 
    WHILE @intAlpha > 0 
    BEGIN 
        Set @strAlpha = @strAlpha + SUBSTRING(@strAlphaNumeric,@intAlpha,1)
        SET @strAlphaNumeric = Stuff(@strAlphaNumeric, @intAlpha, 1''
        SET @intAlpha = Patindex('%[^0-9]%', @strAlphaNumeric) 
    END 
    Set @strAlphaNumeric = MAX(@strAlphaNumeric)
    SELECT @strAlpha ,@strAlphaNumeric
END 
cs



MSSQL에서 제공해주는 내장함수

Patindex : 유효한 text 및 character 데이터 형식에 패턴에 대한 시작 위치를 반환


구문

PATINDEX ( '%pattern%', expression)


예 )

 Select Patindex('%[^0-9]%', 'D0001')  as '숫자가 아닌 글자 인덱스'


패턴 ('%pattern%') 종류 : 



Stuff  :   문자열(charater_expression)을 다른 문자열로 추가한다. 문자열은 시작점(Start position)에서 문자열안에 명시된 (length)만큼 삭제한 다음 두번째 문자열(replaceWith_expression)을 시작 위치의 첫 번째 문자열에 삽입합니다.


구문 

STUFF (character_expression , start , length , replaceWith_expression )


예)

SELECT STUFF('안녕하세요' ,1,1,'')


SUBSTRING : 문자열이나, 바이너리, 텍스트 또는 이미지 표현에 대한 부분값을 리턴합니다.


구문

SUBSTRING ( expression ,start , length )


예 )

SELECT SUBSTRING('안녕하세요',2,1)




Posted by Hoya0415
,

LEN : 문자열 자리수 반환

Len ( expression )

예 ) SELECT Len('문자열')


Substring : 문자열, 바이너리,텍스트 이미지 표현 등 MSSQL 에서 부분을 리턴한다.

Substring ( expression, start, length)

예 )Select SUBSTRING('문자열',2,1)

Posted by Hoya0415
,

설명 :

 TableName1 테이블을 A로 명칭,  TableName2 테이블을 B로 명칭, 후 Join 으로 매칭된 값을

SET A.Link = B.FileName 넣어주고, A라고 명칭한 테이블을 업데이트 한다.  UPDATE A 


구문 : 

UPDATE A

SET A.[Link] =B.FileName

From [TableName1] A join [TableName2] B ON

A.MSeq = B.MSeq 



Posted by Hoya0415
,

- RTRIM

문자열 이후의 공백을 지운다.

예 ) SELECT RTRIM('Removes trailing spaces. ');


- LTRIM

문자열 선두의 공백을 지운다.

예 ) SELECT LTRIM(' Five spaces are at the beginning of this string.')


Posted by Hoya0415
,

Full text Search (전문검색) 을 구현하려면 우선 이론적으로 알아야하고, 관리방법도 익혀야하며 효율적으로 명령을 내려야 운영 DB에 이상없이 적용이 되고, 운용 DB의 Schema가 바뀌는 상황이 생겨도 재빠른 대처를 할 수 있다. 


명령어들을 나열했고 추가적으로 업데이트를 할 생각이에요. 보시고 부족한 부분 있으면 댓글로 남겨주시면 참고하겠습니다.^^


FULL TEXT SEARCH 개발 순서

1. Create a full-text catalog, if necessary.

2. Create the full-text index.

3. Modify the list of noise words (SQL Server 2005) or stop words (SQL Server 2008), if necessary.

4. Modify the thesaurus for the language being used, if necessary.


1. FULL-TEXT Catalog 생성

CREATE FULLTEXT CATALOG [CataLogName] AS DEFAULT;


1.1 Catalog 확인

SELECT * FROM sys.FullText_Catalogs


2.  FULL-TEXT INDEX 생성

2.1)CREATE FULLTEXT INDEX ON [테이블]

([필드], [필드] LANGUAGE 1042)

KEY INDEX [인덱스 키]

ON [카탈로그 명]

WITH STOPLIST = SYSTEM

2.2))CREATE FULLTEXT INDEX [INDEXKEYNAME] ON[테이블]([필드]); 

  CREATE FULLTEXT INDEX ON  [테이블]([필드]) KEY INDEX [INDEXKEYNAME] ON [Catalog];


3. index 생성 시 language 설정하기 위해 리스트 보기.

SELECT * FROM sys.fulltext_languages

ORDER BY lcid

[Korea 1042]


3. Start population

ALTER FULLTEXT INDEX ON SalesLT.ProductDescription ENABLE; 

GO 

ALTER FULLTEXT INDEX ON SalesLT.ProductCategory START FULL POPULATION;


4. Monitor full-text search 활성화

SELECT * FROM sys.dm_fts_index_population


5. 채우기 상태 모니터링

SELECT FULLTEXTCATALOGPROPERTY('ftCatalog', 'SalesLT.ProductCategory');


6. 인덱스 내용 정보 반환

SELECT * FROM sys.dm_fts_index_keywords( DB_ID('AdventureWorksLT'), OBJECT_ID('SalesLT.ProductCategory'))


7. CONTAINSTABLE 가중치(RANK) 이용해서 각 단어에 따른 RANK가 지정되어 등급별로 행을 반황할 수 있다.

SELECT * FROM CONTAINSTABLE ( [SalesLT].[ProductCategory], Name, 'ISABOUT (그노 WEIGHT (.8), 

그노 WEIGHT (.4), 그 WEIGHT (.2) )' )


8. CONTAINS특정 키워드를 이용해 전문검색 카탈로그를 검색합니다. 

SELECT  *

FROM [SalesLT].[ProductCategory]

WHERE CONTAINS(Name,'그노')   


9. FREETEXT 자유 검색

SELECT * FROM [SalesLT].[ProductCategory] WHERE FREETEXT(Name,N'그노1')  


10. Catalog 확인

SELECT * FROM sys.FullText_Catalogs  


11. FullText Index 확인

EXEC SP_HELP_FULLTEXT_Tables  


12. INDEX 삭제하기

DROP FULLTEXT INDEX ON [테이블명]


13. 카탈로그 삭제하기

DROP FULLTEXT CATALOG [카탈로그명]  


14. 증분 파풀레이션

EXEC sp_fulltext_catalog 'ftCatalog','start_incremental'


15. 풀 파풀레이션 

EXEC sp_fulltext_catalog 'ftCatalog','start_full'


16. STOPLIST 생성하기

CREATE FULLTEXT STOPLIST ProductSL

FROM SYSTEM STOPLIST;


17. STOPLIST 조회하기

SELECT stoplist_id, name FROM sys.fulltext_stoplists


18. STOPLIST 추가하기

ALTER FULLTEXT STOPLIST ProductSL

ADD '?????' LANGUAGE 1042;


19. STOPLIST 리스트 조회하기

SELECT stopword FROM sys.fulltext_stopwords

WHERE stoplist_id = 5 AND language_id = 1042


20. STOPLIST 테스트하기

SELECT special_term, display_term

FROM sys.dm_fts_parser

  (' "testing for ? ?? ????? fruit and nuts, any type of nut" ', 1042, 5, 0)


21. STOPLIST 적용하기

ALTER FULLTEXT INDEX ON ProductDocs

SET STOPLIST ProductSL


22. 테이블에 timestamp 컬럼 추가

ALTER TABLE [테이블명] ADD [컬럼명] timestamp not null




------------------------------------------------------------------

CREATE FULLTEXT INDEX ON Place

(Name, Address LANGUAGE 1042)

KEY INDEX PK_Place

ON PlaceFTS

WITH CHANGE_TRACKING AUTO


use MOCCOZYDATABASE

GO

CREATE FULLTEXT CATALOG PlaceFTS

WITH ACCENT_SENSITIVITY = OFF


SELECT t.name AS TableName, c.name AS FTCatalogName

FROM sys.tables t JOIN sys.fulltext_indexes i

  ON t.object_id = i.object_id

JOIN sys.fulltext_catalogs c

  ON i.fulltext_catalog_id = c.fulltext_catalog_id



  SELECT display_term, column_id, document_count
FROM sys.dm_fts_index_keywords
  (DB_ID('MOCCOZYDATABASE'), OBJECT_ID('Place'))

----------------------------------------------------------------------

Posted by Hoya0415
,

안녕하십니까 ?

곰돌이 개발자 입니다.

오늘은 데이터베이스 다이어그램에 대해서 설명해드리겠습니다.


데이터베이스를 만들고 R1, R2 의 테이블을 관계 지었을 경우, 한번에 볼일이 생깁니다.

이때DATABASE DIAGRAM을 사용하면 되는데, 새 데이터베이스 다이어그램을 눌러보면 아래와 같은 내용을 볼 수 있습니다.

이떄는 데이터베이스의 속성-> 파일 -> 소유자를 선택을 하면 됩니다.






Posted by Hoya0415
,

SQL Server Configuration Manager 를 들어가보니 프로시저를 호출하지 못했다

구글링 하다보니 어떤 dll 이 깨져서 그렇단다. 


해결 방법 : 해당 SQL 버전의 SP1을 다시 설치해주면 된다. 


주의 : SP1 국가 언어와 버전이 같아한다.


'데이터베이스 > MSSQL' 카테고리의 다른 글

FULL TEXT SEARCH (전문검색) 명령어  (0) 2016.06.03
[MSSQL] Database diagram 소유자 설정  (0) 2015.11.20
varchar()와 nvarchar()의 차이점  (0) 2015.11.17
SQL JOIN 종류  (0) 2015.07.21
테이블 변수  (0) 2015.07.21
Posted by Hoya0415
,

VARCHAR

Non-Unicode Variable Length character data type.

 차이점은 varchar는 유니코드를 지원하지 않고, ABCDEF 영어 문자 단위를 1 Byte로 인식한다. 

"ABCDEF" =  6byte

DECLARE @FirstName AS VARCHAR(50) = 'ABCDE'

SELECT @FirstName AS FirstName,

DATALENGTH(@FirstName) AS 

Length

UNicode Variable Length character data type. 

유니코드를 지원하며, 모든 문자 단위를 2Byte 로 인식한다.

"ABCDEF" =  12byte


DECLARE @FirstName AS NVARCHAR(50)= 'ABCDE'

SELECT @FirstName AS FirstName,

DATALENGTH(@FirstName) AS Length

NVARCHAR



영문이 들어가는 Column은 VARCHAR

영문;한글;외에 글자가 들어가는 Column은 NVARCHAR로 하는게 이상적이다.

'데이터베이스 > MSSQL' 카테고리의 다른 글

[MSSQL] Database diagram 소유자 설정  (0) 2015.11.20
[SQL] Client에서 Local Server로 접속 시 오류  (0) 2015.11.18
SQL JOIN 종류  (0) 2015.07.21
테이블 변수  (0) 2015.07.21
SQL  (0) 2015.07.20
Posted by Hoya0415
,

SQL JOINS 

INNER JOIN 

OUTER JOIN 등 매우 다양하네요.

'데이터베이스 > MSSQL' 카테고리의 다른 글

[MSSQL] Database diagram 소유자 설정  (0) 2015.11.20
[SQL] Client에서 Local Server로 접속 시 오류  (0) 2015.11.18
varchar()와 nvarchar()의 차이점  (0) 2015.11.17
테이블 변수  (0) 2015.07.21
SQL  (0) 2015.07.20
Posted by Hoya0415
,

 테이블 변수를 생성

Declare @reviewTemp Table(

 Id int,

 Sumint )


테이블 변수에 데이터 넣기.

Insert Into @reviewTemp
Select 필드1,sum(필드2)
FROM [gwatop].[dbo].[테이블]

테이블 변수는 쿼리 후 사라진다. 원래 임시 테이블을 쓰려다가 안좋다는 사람들도 많아서 테이블 변수로 사용했다.

사용한 이유는 3개의 테이블을 Inner Join 혹은 Full Join 했는데 3개 테이블을 제외한 다른 두개의 테이블의 정보 가지고 정렬을 해야하는 일이 있어서 많은 생각 끝에 테이블 변수를 만들었지만 Sub Query로 해결하였다.


'데이터베이스 > MSSQL' 카테고리의 다른 글

[MSSQL] Database diagram 소유자 설정  (0) 2015.11.20
[SQL] Client에서 Local Server로 접속 시 오류  (0) 2015.11.18
varchar()와 nvarchar()의 차이점  (0) 2015.11.17
SQL JOIN 종류  (0) 2015.07.21
SQL  (0) 2015.07.20
Posted by Hoya0415
,