반응형

이걸 응용하면 AA~ZZ, AAAA~ZZZZ 도 가능하다.

 

Data 가 없이 시작하는 경우 isnull 조건을 추가하면된다.

isnull 은 Z 로 하면 바로 AAA 부터 시작이다.

 

그게 귀찮다면? 그냥 기본값으로 ZZZ를 하나 넣어두고 시작하면 된다.

---- AAA 에서 ZZZ 까지 순서대로 체번하기

select char(
case ASCII(substring(MAX(AAAZZZ),2,1))
when 90
then case ASCII(substring(MAX(AAAZZZ),3,1))
when 90
then case ASCII(substring(MAX(AAAZZZ),1,1))
when 90
then 65
else ASCII(substring(MAX(AAAZZZ),1,1))+1 end
else ASCII(substring(MAX(AAAZZZ),1,1))+1 end
else ASCII(substring(MAX(AAAZZZ),1,1)) end
)

+ char(
case ASCII(substring(MAX(AAAZZZ),3,1))
when 90
then case ASCII(substring(MAX(AAAZZZ),2,1))
when 90
then 65
else ASCII(substring(MAX(AAAZZZ),2,1))+1 end
else ASCII(substring(MAX(AAAZZZ),2,1)) end
)

+ char(
case ASCII(substring(MAX(AAAZZZ),3,1))
when 90
then 65
else ASCII(substring(MAX(AAAZZZ),3,1))+1 end
) as MARKING
from TEST_TABLE

 

반응형
반응형

MS-SQL을 사용하다보면

 

포커스를 다른곳으로 이동

다시 화면으로 돌아오면 한글로 변경되는 경우가 있다.

 

짜증이 난다? 응 짜증나!!

 

나만의 해결 방법은 이렇다!!

물론 다른 방법이 있을지 모르지만!!

 

쿼리 - 쿼리 옵션 창을 띄우고

한/영 키를 누른다.

 

그 다음 다시 원래 창으로 돌아가서 사용하면 문제가 없다.

 

다만 MSSQL Management Studio를 닫았다가 다시열면...

다시 쿼리 - 쿼리 옵션 창에서 한영키를 눌러주어야 한다.

윈도우 IME 설정과 Office 등의 MS의 프로그램 충돌이 발생하는 것 같은데...

 

해결방법을 아시는분은 나도 알려주세요 ㅠ_ㅠ

반응형
반응형

# MSSQL Alter Table 

# 테이블 컬럼 추가

정의 :

▶ ALTER TABLE [테이블명] ADD [컬럼명] varchar(100) Default Null

예제 :

▶ ALTER TABLE TEST_TABLE ADD TEST_COUMN VARCHAR(10) NULL

 

# 테이블 컬럼 삭제

정의 :

▶ ALTER TABLE [테이블명] DROP COLUMN [컬럼명]

예제 :

▶ ALTER TABLE TEST_TABLE DROP COLUMN TEST_COUMN

 

# 테이블 컬럼 수정

정의 :

▶ ALTER TABLE [테이블명] ALTER COLUMN [컬럼명] varchar(100) Default Null

예제 :

▶ ALTER TABLE TEST_TABLE ALTER COLUMN TEST_COUMN VARCHAR(100) NULL

 

반응형
반응형

[MSSQL] 행렬 변환 함수 PIVOT, UNPIVOT

 

 # PIVOT

아래와 같이 학생이름, 과목, 점수가 반영된 테이블이 있다고 가정하면

WITH TABLE_A (이름, 과목, 점수) AS (
SELECT '철수', '국어', 90 UNION ALL
SELECT '철수', '영어', 85 UNION ALL
SELECT '영희', '국어', 70 UNION ALL
SELECT '영희', '영어', 80 )
SELECT * FROM TABLE_A

 - 조회 값

이름 과목 점수
철수 국어 90
철수 영어 85
영희 국어 70
영희 영어 80

이 테이블에 대하여 과목별 학생의 점수 합을 구하고 싶다면? 아래와 같이 MSSQL에서 재공하는 PIVOT을 사용 한다.

 

 ex) 과목별 점수 구하기

WITH TABLE_A (이름, 과목, 점수) AS (
SELECT '철수', '국어', 90 UNION ALL
SELECT '철수', '영어', 85 UNION ALL
SELECT '영희', '국어', 70 UNION ALL
SELECT '영희', '영어', 80 )

SELECT * FROM TABLE_A
PIVOT(SUM(점수) FOR 이름 IN (철수,영희)) AS PVT

 - 결과 값

과목 철수 영희
국어 90 70
영어 85 80

이렇게 조회가 된다.

위 식을 복사해서 사용해 보면 이해하기가 쉽다.

 # UNPIVOT

아래와 같이 학생이름, 과목, 점수가 반영된 테이블이 있다고 가정하면

WITH TABLE_A (이름, 국어, 영어) AS (
SELECT '철수', '90', '80' UNION ALL
SELECT '영희', '85', '100' )
SELECT * FROM TABLE_A

 - 조회 값

이름 국어 영어
철수 90 80
영희 85 100

 ex) 이름에 과목별로 점수를 구하고 싶을 경우

WITH TABLE_A (이름, 국어, 영어) AS (
SELECT '철수', '90', '80' UNION ALL
SELECT '영희', '85', '100' )
SELECT 이름, 과목, 점수 FROM TABLE_A
UNPIVOT(점수 FOR 과목 IN (영어))AS UNPVT
union all
SELECT 이름, 과목, 점수 FROM TABLE_A
UNPIVOT(점수 FOR 과목 IN (국어))AS UNPVT

 -- union all 을 사용한 이유는?

 -- 원래는 UNPIVOT(점수 FOR 과목 IN (국어, 영어))AS UNPVT 이렇게 사용하면 영어 국어에 대한 내용이 나오는데 에러가 나서 그냥 union all 을 사용해 버렸다.

 -- 에러 수정하면 다시 올리도록 하겠다. 물론 에러가 발생한 이유도 같이 올리도록 하겠다!!

 - 결과 값

이름 과목 점수
철수 영어 80
영희 영어 100
철수 국어 90
영희 국어 85

반응형
반응형

DB 환경은 MSSQL 입니다.

프로그램을 개발하다 보면 리얼 서버에서는 작업을 하지 못할때가 많습니다. 그럴때 백업 DB를 하나 만들어서 접속 경로를 백업 DB로 해서 작업하면 훨씬 수월하니다. 마음대로 테스트를 해도 날려먹어도 문제가 되지 않으니까요.

그래서 백업 DB를 만들던 중 저도 실수할까봐 이렇게 포스팅을 합니다.

테스트 DB가 있으면 어떤 작업을 하던 일을 수월하게 진행 할 수 있습니다.

우선 테스트 데이터베이스를 만들기 위한 첫번째

 

 

빈 데이터베이스 (DATABASE) 를 만들어야 합니다.

TEST DB 를 올려하 하니까 빈 DB가 필요 합니다.

데이터베이스 - 새 데이터베이스 로 들어갑니다.

 

데이터 베이스 이름을 설정하고 저장합니다.

이렇게 하면 일단 테스트 데이터베이스를 올릴 수 있는 빈 DATABASE가 생겼습니다.

이제 본격적으로 리얼 데이터베이스 즉 사용중인 DB를 백업해서 빈 데이터베이스에 올리는걸 해보도록 합시다.

 

 

리얼서버 즉 사용중인 DATABASE 를 우클릭해서 태스크로 들어갑니다.

그러면 백업이라고 보일 겁니다. 백업을 선택해서 데이터베이스로 들어갑니다.

그러면 아래와 같은 창이 나옵니다.

 

 

데이터베이스 복원 창이 나오면 일반에서

원본 - 데이터베이스 (백업할 데이터베이스)

대상 - 데이터베이스 (백업한 데이터베이스를 담을 TEST DATABASE) 를 지정합니다.

여기까지 진행한 후에 파일로 넘어갑니다.

 

 

데이터베이스 파일을 다음으로 복원에서 중간을 보면 경로가 있습니다.

다음으로 복원 경로를 백업DB.MDF / 백업DB_LOG.LDF 로 변경해 줍니다.

DB 경로는 각 사용자의 환경마다 다르겠지만 저 같은 경우는 D:\DB 에 전부 집어넣고 사용하고 있습니다.

참고하여 주십시요.

파일에서는 이부분만 처리해주면 됩니다. 이제 옵션으로 넘어가도록 하겠습니다.

 

 

옵션에서는 별거 없습니다.

백업 DB 를 TEST DB 에 넣어야 하기 때문에 복원 옵션 - 기존 데이터베이스 덮어쓰기 (WITH REPLASE)(O) 를 선택하도록 합니다. 그래야 백업받은 DB를 TEST DB 에 부어서 사용할수가 있습니다.

이제 프로그램 DB 연결 경로를 TEST DB로 연결해서 사용하면 내마음대로 DATA를 지지고 볶고 해도 문제가 없습니다.

이상, 부족하지만 읽어주셔서 감사합니다.

반응형
반응형

MSSQL 을 사용하다 보면 특수문자만 골라서 LIKE 검색을 하고 싶은데

SELECT * FROM [TABLE1] WHERE 1=1 AND [COLUMN1] LIKE '%_%'

이렇게 조회하면 그냥 모든것이 전부 조회가 된다.

이럴때 해결 방법이다. 참 간단한 문제인데 의외로 모르는 사람들이 많다.

SQL 특수문자 자체를 검색하기 시작해보도록 합시다!!

아래로 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

 MSSQL 특수문자 LIKE 조회하기 Escape 사용하기 _%#&- 등 조회


-- 우선 테이블을 생성하자. DATA를 확인해야 이해가 가니까 그냥 만들어 줍니다.

create table TABLE_1 (mNo int identity(1,1),COLUMN1 varchar(100) )


-- 특수 문자 자체를 검색하기 및 사용하기
-- 간단하게 말해서!! [] 안에 원하는 특수문자를 넣으면 됩니다.
-- 다른 방법으로는 escape '/' 뒤에 특수문자를 넣으면 됩니다.

insert into TABLE_1 values ('ABC_DEFG_HIJK')
insert into TABLE_1 values ('ABC1DEFG_HIJK')
insert into TABLE_1 values ('ABC_DEFG2HIJK')
insert into TABLE_1 values ('ABC_DEFG%HIJK')
insert into TABLE_1 values ('ABC_DEFG\HIJK')
insert into TABLE_1 values ('ABC_DEFG/HIJK')

select * from TABLE_1 where COLUMN1 like '%ABC[_]DEFG[%]HIJK%'
select * from TABLE_1 where COLUMN1 like '%ABC[_]DEFG[_]HIJK%'
select * from TABLE_1 where COLUMN1 like '%ABC/_DEFG/_HIJK%' escape '/'


프로파일러 Textdata 유사 부분에선 [] 방법을 쓰면 됩니다.

이해하셨나요??

 

반응형

+ Recent posts