반응형
반응형

[MSSQL] 테이블 정보 확인

 

테이블 컬럼 정보 확인

select * from information_schema.columns

where table_name = ''

 

테이블 제약조건 확인 

select

*

from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE

where table_name = ''

 

테이블 인덱스 확인 확인 

SELECT * FROM sys.dm_db_index_physical_stats

 

반응형
반응형

[MSSQL] CHARINDEX 두개의 문자 에서 문자 찾기 

 

CHARINDEX(Transact-SQL)

이 함수는 두 번째 문자 식 내에서 하나의 문자 식을 찾고, 있는 경우 첫 번째 식의 시작 위치를 반환합니다.

 

DECLARE @document VARCHAR(64);  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('bicycle', @document);  



-----------   
48

 

반응형
반응형

 

-- ROW_NUMBER 함수를 사용할 때는 ORDER BY를 필수로 사용해야하는데, 의미없는 (SELECT 1)을 부여하여 ORDER BY 없이 조회된 결과의 순번을 부여한다.


SELECT ROW_NUMBER() OVER(ORDER BY sal DESC) AS rownum
     , ename
     , job
     , sal
  FROM emp
 WHERE sal > 2000

-- ORDER BY에 정렬 컬럼을 사용하면 정렬 후 순번이 부여된다.

SELECT ROW_NUMBER() OVER(ORDER BY sal DESC) AS rownum
     , ename
     , job
     , sal
  FROM emp
 WHERE sal > 2000

반응형
반응형

 

 

 

1. 테이블의 생성과 동시에 데이터까지 모두 복사하는 방법

 

SELECT * INTO [생성할 테이블명 ] FROM [원본 테이블명]

기본적으로 테이블과 동시에 데이터까지 복사하는 방법이다.  

 

2. 테이블을 생성할 때 원하는 컬럼만 복사하는 방법

 

SELECT [원하는 컬럼명] INTO [생성할 테이블명 ] FROM [원본 테이블명]

내가 원하는 컬럼만 복사하여 테이블을 만들때 간단하게 해결이 가능하다. 

 

3. 테이블을 생성할 때 테이블 구조만 복사하는 방법

 

SELECT * INTO [생성할 테이블명 ] FROM [원본 테이블명] WHERE  1=2

테이블을 복사할 때 테이블에서 테이터는 없이 테이블 구조만 복사할 때는 'WHERE  1=2'와 같은 쿼리를 실해시키면 테이블의 구조만 복사할 수 있다.

 

4. 테이블은 이미 있고 데이터만 복사하는 방법

 

INSERT INTO [ 데이터를 넣을 테이블명 ] SELECT * FROM [원본 테이블명]

테이블은 이미 있고 그 테이블에 데이터만 복사하고 싶을 경우에는 위와 같은 방법으로 데이터를 넣을 수 있다. 

 

5. 이를 응용해보면 아주 유용하게 사용할 수 있다.

 

INSET INTO [데이터를 넣을 테이블명](컬럼1, 컬럼2) SELECT 복사할 컬럼1, 복사할 컬럼2 FROM [원본 테이블명] GROUP BY 컬럼1

출처: https://dongpal.tistory.com/10 [dongpal's story:티스토리]

반응형
반응형

※ CHARINDEX() 함수와 SUBSTRING함수를 이용한 분리

DECLARE @DATA VARCHAR(MAX), @separator CHAR, @substring varchar(max), @dividepos INT, @tot_cnt int

set @data = 'a,bb,ccc,ddd,eeeee,ffffff,gggggggg,hhhhhh,iiiiiiiii' 
set @separator = ','
set @dividepos = CHARINDEX(@separator, @data)
set @tot_cnt = 0

while @dividepos <> 0 or len(@data) > 0
begin
set @dividepos = CHARINDEX(@separator,@data)
if( @dividepos = 0 )
begin
set @substring = @data
set @data = ''
end
else
begin
select @substring = SUBSTRING(@data,1,@dividepos - 1)
set @data = SUBSTRING(@data, @dividepos +1, len(@data))
end 
set @tot_cnt = @tot_cnt + 1

-- select @substring, @tot_cnt

end

 

---※ CHARINDEX() 함수와 SUBSTRING함수를 이용한 분리

DECLARE @DATA VARCHAR(MAX), @separator CHAR, @substring varchar(max), @dividepos INT, @tot_cnt int

set @data = 'a,bb,ccc,ddd,eeeee,ffffff,gggggggg,hhhhhh,iiiiiiiii' 
set @separator = ','
set @dividepos = CHARINDEX(@separator, @data)
set @tot_cnt = 0

while @dividepos <> 0 or len(@data) > 0
begin
	set @dividepos = CHARINDEX(@separator,@data)
	if( @dividepos = 0 )
	begin
		set @substring = @data
		set @data = ''
	end
	else
	begin
		select @substring = SUBSTRING(@data,1,@dividepos - 1)
		set @data = SUBSTRING(@data, @dividepos +1, len(@data))
	end 
	set @tot_cnt = @tot_cnt + 1

	-- select @substring, @tot_cnt

end
반응형
반응형

 

[MSSQL] MSSQL Insert 실행시 자동증가되는 IDENTITY값 바로 가져오기

 

SELECT @@IDENTITY




INSERT INTO T_AUTH ( VAL1 ,VAL2 ,VAL3)
values( #{VAL1} ,#{VAL2} ,#{VAL3}) 

SELECT @@IDENTITY AS SEQ
반응형

+ Recent posts