CREATE DATABASE MyOptionsTest COLLATE Korean_Wansung_CI_AS; GO USE master; GO ALTER DATABASE MyOptionsTest COLLATE Korean_Wansung_CI_AS; GO
EXEC sp_databases GO
EXEC sp_tables GO GO EXEC sp_tables @TABLE_NAME = '%', @table_owner = 'dbo', @table_qualifier = 'model'; GO
-- 원하는 테이블 검색 SELECT name FROM DBname.sys.tables WHERE name LIKE '%xxx%' AND is_ms_shipped = 0; -- << 불필요하면 제거
-- 테이블 정보 보기 EXEC sp_help tablename GO SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'tablename'; GO
count(*)
를 사용하면 조회 조건을 만족하는 모든 것들 훑어야 하지만, exists
를 사용하면 첫번째 데이터에서 바로 반환한다.-- 조건을 만족하는 첫번째 것에서 바로 중단하고 1 혹은 0 반환 SELECT COUNT(1) WHERE EXISTS (SELECT * FROM books WHERE book_type='IT')
-- 이 방법은 SQLServer 2008 이후로는 사용하지 말라고 함. UPDATE test SET name='john' WHERE id=3012 IF @@ROWCOUNT=0 INSERT INTO test(name) VALUES('john');
-- TEST 가 UPDATE/INSERT 대상 테이블일 때 MERGE dbo.TEST AS T USING (SELECT 3, 300) AS S (userSN, col1) -- update or insert 할 데이터 테이블. SELECT로 가상 테이블 만듬 ON T.userSN = S.userSN WHEN MATCHED THEN UPDATE SET col1 = S.col1 WHEN NOT MATCHED BY TARGET THEN INSERT (userSN, col1) VALUES (S.userSN, S.col1);
OFFSET
은 0
부터 시작한다.SELECT * FROM Sales.SalesOrderDetail ORDER BY SalesOrderDetailID OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY; GO
DATE
와 TIME
컬럼이 따로 존재할 경우 이 둘을 합쳐서 DATETIME
을 만들려면, How to combine date from one field with time from another field - MS SQL Server-- modifyDate : DATE, modifyTime : TIME 컬럼일 경우 CAST(modifyDate AS DATETIME) + CAST(modifyTime AS DATETIME) modifiedAt
CR
, LF
,, CRLF
모두 제거해야 한다.SELECT REPLACE(REPLACE(@str, CHAR(13), ''), CHAR(10), '')
.
혹은 :
을 사용하려면 \.
\:
형태로 Escape하지 않으면 null 리턴된다.hh
이다. *대문자 아님*.SELECT FORMAT(CAST('07:35' AS TIME), N'hh\.mm'); --> returns 07.35 SELECT FORMAT(CAST('07:35' AS TIME), N'hh\:mm'); --> returns 07:35
CAST
를 사용한다. -- 2019-09-20 18:51:47 DECLARE @d NVARCHAR(14)='20170920185147'; SELECT DATETIMEFROMPARTS (LEFT(@d, 4), SUBSTRING(@d, 5,2), SUBSTRING(@d,7 ,2), SUBSTRING(@d, 9, 2) , SUBSTRING(@d, 11, 2), RIGHT(@d, 2), 0) as "with_var", DATETIMEFROMPARTS (LEFT('20170920185147', 4), SUBSTRING('20170920185147', 5,2), SUBSTRING('20170920185147',7 ,2), SUBSTRING('20170920185147', 9, 2) , SUBSTRING('20170920185147', 11, 2), RIGHT('20170920185147', 2), 0) as "with_literal", DATETIME2FROMPARTS (LEFT('20170920185147', 4), SUBSTRING('20170920185147', 5,2), SUBSTRING('20170920185147',7 ,2), SUBSTRING('20170920185147', 9, 2) , SUBSTRING('20170920185147', 11, 2), RIGHT('20170920185147', 2), 0, 0) as "dt2" ;