본문 바로가기

sqlserver

[SqlServer] 시스템 테이블 --테이블 정보--P : SP --U : 테이블--TR : 트리거--V : View--FN,TF : FuntionSELECT *FROM SYS.OBJECTSWHERE TYPE = 'U' --컬럼 정보SELECT *FROM INFORMATION_SCHEMA.COLUMNS --컬럼으로 테이블 찾기SELECT *FROMSYS.OBJECTS a WITH(NOLOCK) join INFORMATION_SCHEMA.COLUMNS b WITH(NOLOCK) on a.name = b.TABLE_NAMEwherea.TYPE = 'U'and b.COLUMN_NAME like '%DocNo%'
[Databases] 기존 테이블 데이터로 신규 테이블 생성(테이블 복사) 아래와 같이 하면 기존 BaseTB의 데이터까지 그대로 NewTB를 생성하면서 넣어준다. *SqlServer 일 경우 SELECT * INTO NewTBFROM BaseTB *MySql, Oracle 일 경우 CREATE TABLE NewTB ASSELECT * FROM BaseTB
[SqlServer] 테이블에 컬럼 추가 및 수정 *추가ALTER TABLE TB_BBS ADD Gubun INT *수정ALTER TABLE TB_BBS ALTER COLUMN Memo VarChar(2000)ALTER TABLE TB_BBS ALTER COLUMN ID INT NOT NULL *삭제ALTER TABLE TB_BBS DROP COLUMN Memo *제약조건 삭제ALTER TABLE TB_BBS DROP CONSTRAINT BBS_PK *제약조건 추가ALTER TABLE TB_BBS ADD CONSTRAINT TB_BBS_PK PRIMARY KEY CLUSTERED ( [Code] ASC, [Type] ASC,)
[SqlServer] 각 테이블별 행 개수 집계 DECLARE @TableRowCounts TABLE ( [TableName] VARCHAR(128), [RowCount] INT) ; INSERT INTO @TableRowCounts ( [TableName], [RowCount]) EXEC sp_MSforeachtable 'SELECT ''?'' [TableName], COUNT(*) [RowCount] FROM ? ' ; SELECT [TableName], [RowCount] FROM @TableRowCounts ORDER BY [TableName]
[SqlServer] 콤마를 기준으로 문자열 자르기 DECLARE @InStr VARCHAR(500) DECLARE @Position INT --문자 자를 기준 위치 DECLARE @GubunPosition INT --문자 찾은 위치 DECLARE @TmpSysId VARCHAR(20) --시스템 아이디 DECLARE @StrColumns VARCHAR(4000) --가변적 문자열 컬럼 SET @InStr = '''ABC'',''BBB'',''EEE'''SET @Position = 1 SET @GubunPosition = 1 SET @StrColumns = '' --시스템 아이디가 가변적으로 들어 오기 때문에 --컬럼 문자열을 만들어 준다. WHILE(@GubunPosition > 0) BEGIN SET @GubunPosition = CHARINDEX('..
[SqlServer] SP 등 오브젝트 안에서 키워드 찾기 SELECT DISTINCT OBJECT_NAME(o.object_id) AS SP_NAME FROM SYS.SQL_MODULES m WITH(NOLOCK) , SYS.OBJECTS o WITH(NOLOCK) WHERE m.object_id = o.object_id AND o.TYPE = 'P' -- P:SP , U:테이블, TR:트리거, V:View, IF(FN)(TF):Funtion AND m.DEFINITION LIKE '%tablename%' --찾고 싶은 키워드 ORDER BY SP_NAME; --컬럼 타입으로 검색SELECTdistinct TABLE_NAMEFROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'nvarchar'
[SqlServer] DateTime 필드 조회시 주의점 SELECT*FROM TB_TESTWHERE CreateDate BETWEEN '2012-01-01' AND '2012-03-31' ; 이렇게 조회 조건절을 거는 경우가 가끔 있는데 이렇게 하면 잘 되는것 같이 보이지만 자세히 데이터를 확인해 보면2012-03-31 일자 데이터가 빠져서 조회 된다. 아래와 같이 하면 빠지지 않고 모든 데이터 조회가 된다. SELECT*FROM TB_TESTWHERE CONVERT(VARCHAR, CreateDate , 112) BETWEEN '20120101' AND '20120331' ;
[SqlServer] 날짜 함수 -- Get date only from datetime - QUICK SYNTAXSELECT DATEADD(dd, 0, DATEDIFF(dd, 0, CURRENT_TIMESTAMP)) -- 2016-10-23 00:00:00.000------------ -- SQL Server T-SQL date & datetime formats - Gregorian calendar - Christian calendar -- getdate() / CURRENT_TIMESTAMP(ANSI) returns system date & time in standard format -- SQL datetime formats with century (YYYY or CCYY format)- sql date & time format SE..