■ SQL Express Server 연결 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
#region SQL Express Server 연결 문자열 구하기 - GetSQLExpressServerConnectionString(databaseName, filePath) /// <summary> /// SQL Express Server 연결 문자열 구하기 /// </summary> /// <param name="databaseName">데이터베이스명</param> /// <param name="filePath">파일 경로</param> /// <returns>SQL Express Server 연결 문자열</returns> public string GetSQLExpressServerConnectionString(string databaseName, string filePath) { return string.Format("Data Source=.\SQLExpress;Initial Catalog={0};Integrated Security=True; AttachDBFileName={1}", databaseName, filePath); } #endregion |
■ MS Access 2007 연결 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
#region MS Access 2007 연결 문자열 구하기 - GetMSAccess2007ConnectionString(filePath) /// <summary> /// MS Access 2007 연결 문자열 구하기 /// </summary> /// <param name="filePath">파일 경로</param> /// <returns>MS Access 2007 연결 문자열</returns> public string GetMSAccess2007ConnectionString(string filePath) { return string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};Mode=ReadWrite", filePath); } #endregion |
■ MS Access 연결 문자열을 구하는 방법을 보여준다. ▶ MS Access 연결 문자열 구하기 (C#)
|
#region MS Access 연결 문자열 구하기 - GetMSAccessConnectionString(filePath) /// <summary> /// MS Access 연결 문자열 구하기 /// </summary> /// <param name="filePath">파일 경로</param> /// <returns>MS Access 연결 문자열</returns> public string GetMSAccessConnectionString(string filePath) { return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", filePath); } #endregion |
▶ MS Access 연결 문자열 구하기
더 읽기
■ 데이터가 없으면 추가하고 있으면 수정하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
-- 사용자 카운트 테이블을 생성한다. CREATE TABLE dbo.UserCount ( UserID VARCHAR(20) ,UserCount INT ); INSERT INTO dbo.UserCount VALUES ('a', 10); -- 'a' 사용자 ID를 INSERT/UPDATE 한다. UPDATE dbo.UserCount SET UserCount = UserCount + 10 WHERE UserID = 'a'; IF @@ROWCOUNT = 0 BEGIN INSERT INTO dbo.UserCount VALUES ('a', 10); END -- 'b' 사용자 ID를 INSERT/UPDATE 한다. UPDATE dbo.UserCount SET UserCount = UserCount + 10 WHERE UserID = 'b'; IF @@ROWCOUNT = 0 BEGIN INSERT INTO dbo.UserCount VALUES ('b', 30); END -- 사용자 카운트 테이블을 출력한다. SELECT * FROM dbo.UserCount; -- 테스트 테이블을 삭제한다. DROP TABLE dbo.UserCount; |
■ 데이터가 없으면 추가하고 있으면 수정하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
-- 사용자 카운트 테이블을 생성한다. CREATE TABLE dbo.UserCount ( UserID VARCHAR(20) ,UserCount INT ); INSERT INTO dbo.UserCount VALUES ('a', 10); -- 'a' 사용자 ID를 INSERT/UPDATE 한다. IF EXISTS(SELECT * FROM dbo.UserCount AS A WITH(NOLOCK) WHERE A.UserID = 'a') BEGIN UPDATE dbo.UserCount SET UserCount = UserCount + 10 WHERE UserID = 'a'; END ELSE BEGIN INSERT INTO dbo.UserCount VALUES ('a', 10); END -- 'b' 사용자 ID를 INSERT/UPDATE 한다. IF EXISTS(SELECT * FROM dbo.UserCount AS A WITH(NOLOCK) WHERE A.UserID = 'b') BEGIN UPDATE dbo.UserCount SET UserCount = UserCount + 10 WHERE UserID = 'b'; END ELSE BEGIN INSERT INTO dbo.UserCount VALUES ('b', 30); END -- 사용자 카운트 테이블을 출력한다. SELECT * FROM dbo.UserCount; -- 테스트 테이블을 삭제한다. DROP TABLE dbo.UserCount; |
■ 자동으로 합계/소계를 만드는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
SELECT COURSE_ID ,STUDENT_ID ,SUM(SCORE) FROM TBL_SCORE WHERE COURSE_ID = 'L0011' GROUP BY COURSE_ID ,STUDENT_ID; /* COURSE_ID STUDENT_ID SUM(SCORE) --------- ---------- ---------- L0011 C0801 68 L0011 C0802 98 */ |
■ 프로그램 설치시 '컴퓨터 다시 시작' 오류를 처리하는 방법을 보여준다. 1. regedit를 실행한다. 2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 키를 찾는다. 3. PendingFileRenameOperations 값을 찾아
더 읽기
■ 잠금을 해제하는 방법을 보여준다. ▶ 잠금 정보를 조회한다 (SQL)
▶ 클라이언트가 Microsoft SQL Server 인스턴스로 마지막으로 전송한 문을 표시한다 (SQL)
더 읽기
■ DATEDIFF 함수를 사용하는 방법을 보여준다. ▶ DATEDIFF 함수 사용하기 예제 (SQL)
|
SELECT DATEDIFF(ww, '2014-03-11', '2014-03-12'); |
▶ DATEDIFF 함수 사용하기 (SQL)
|
DATEDIFF(interval, date1, date2); |
▶ DATEDIFF 함수
더 읽기
■ ERROR_NUMBER 함수의 에러 코드를 보여준다. ▶ 에러 코드
|
───────────────────────────────── 에러 코드 실행 SQL문 원인 ───── ───── ───────────────────── 8152 INSERT 지정된 데이터 길이를 초과해 입력하는 경우 2627 INSERT 중복된 PK로 입력하는 경우 ───────────────────────────────── |
■ DATEPART 함수를 사용하는 방법을 보여준다. ▶ 어제 (SQL)
|
SELECT DATEPART(WEEKDAY, GETDATE() - 1); |
▶ 금일 (SQL)
|
SELECT DATEPART(WEEKDAY, GETDATE()); |
▶ 내일 (SQL)
|
SELECT DATEPART(WEEKDAY, GETDATE() + 1); |
[리턴값] 1 : 일요일
더 읽기
■ 트랜잭션 로그를 삭제하는 방법을 보여준다. 1. 로그 파일을 삭제하는 경우 데이타베이스를 단독 모드로 설정해야 한다. ▶ 예제 코드 (SQL)
|
EXECUTE SP_DBOPTION 'TestDB', 'single user', 'true' |
2.
더 읽기
■ 날짜 포맷을 사용하는 방법을 보여준다. ▶ 예제 코드 (SQL)
|
SELECT CONVERT(VARCHAR(50), GETDATE(), 1); |
[날짜 포맷 번호] 0 : Sep 27 2011 8:53AM 1 :
더 읽기
■ 디폴트 포트가 아닌 다른 포트로 접속하는 방법을 보여준다. SQL Server의 디폴트 포트 1433 외에 다른 포트(예 : 3000)로 접속해야 하는 경우,
더 읽기
■ E 메일 주소를 검증하는 방법을 보여준다. ▶ E 메일 주소 검증하기 예제 (SQL)
|
SELECT dbo.ValidateEMailAddress('icodebroker@naver.com'); |
▶ E 메일 주소 검증하기 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
CREATE FUNCTION [dbo].[ValidateEMailAddress] ( @EMailAddress VARCHAR(255) ) RETURNS BIT AS BEGIN RETURN ( SELECT CASE WHEN @EMailAddress IS NULL THEN 0 WHEN CHARINDEX(' ', @EMailAddress) <> 0 OR CHARINDEX('/', @EMailAddress) <> 0 OR CHARINDEX(':', @EMailAddress) <> 0 OR CHARINDEX(';', @EMailAddress) <> 0 THEN 0 WHEN LEN(@EMailAddress) - 1 <= CHARINDEX('.', @EMailAddress) THEN 0 WHEN @EMailAddress LIKE '%@%@%' OR @EMailAddress NOT LIKE '%@%.%' THEN 0 ELSE 1 END ); END GO |
■ 계층적 테이블을 조회하는 방법을 보여준다. ▶ 계층적 테이블 조회하기 예제 (SQL)
|
SELECT * FROM GetTreeTable(18); |
▶ 계층적 테이블 조회하기 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
CREATE FUNCTION [dbo].[GetTreeTable] ( @ParentID INT -- 부모 ID ) RETURNS @ResultTree TABLE ( ID INT ,Name NVARCHAR(50) ,ParentID INT ,TreeLevel INT ,TreePath VARCHAR(2000) ) AS BEGIN DECLARE @TreeLevel INT; SELECT @TreeLevel = 0; INSERT INTO @ResultTree SELECT ---------------------------------------- ID = A.ID -- ID ,Name = A.Name -- 명칭 ,ParentID = A.ParentID -- 부모 ID ---------------------------------------- ,TreeLevel = @TreeLevel ,TreePath = RIGHT('00000000' + CAST(A.ID AS VARCHAR(8)), 8) FROM Menu AS A WITH(NOLOCK) WHERE A.ID = @ParentID; WHILE @@ROWCOUNT > 0 BEGIN SELECT @TreeLevel = @TreeLevel + 1; INSERT INTO @ResultTree SELECT ---------------------------------------- ID = A.ID -- ID ,Name = A.Name -- 명칭 ,ParentID = A.ParentID -- 부모ID ---------------------------------------- ,TreeLevel = @TreeLevel ,TreePath = B.TreePath + '/' + RIGHT('00000000' + CAST(A.ID AS VARCHAR(8)), 8) FROM Menu AS A WITH(NOLOCK) INNER JOIN @ResultTree AS B ON B.ID = A.ParentID WHERE EXISTS ( SELECT B.* FROM @ResultTree AS B WHERE B.ID = A.ParentID ) AND NOT EXISTS ( SELECT C.* FROM @ResultTree AS C WHERE C.ID = A.ID ); END; RETURN; END GO |
■ DATETIME 값을 'yyyyMMdd' 문자열로 변환하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
CREATE FUNCTION dbo.GetPackedDate ( @Date DATETIME ) RETURNS NVARCHAR(8) AS BEGIN DECLARE @PackedDate NVARCHAR(8); DECLARE @Year NVARCHAR(4); DECLARE @Month NVARCHAR(2); DECLARE @Day NVARCHAR(2); SET @Year = CONVERT(NVARCHAR(4), YEAR (@Date)); SET @Month = CONVERT(NVARCHAR(2), Month(@Date)); SET @Day = CONVERT(NVARCHAR(2), Day (@Date)); SET @Month = SUBSTRING('0' + @Month, LEN(@Month), 2); SET @Day = SUBSTRING('0' + @Day , LEN(@Day ), 2); SET @PackedDate = @Year + @Month + @Day; RETURN @PackedDate; END |
■ 주민등록번호 '9999999999999' 문자열을 '999999-9999999' 문자열로 변환하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
CREATE FUNCTION dbo.ConvertSecurityCodeString ( @Source NVARCHAR(13) ) RETURNS NVARCHAR(14) BEGIN DECLARE @SourceLength INT; SET @SourceLength = LEN(@Source); RETURN CASE WHEN @SourceLength < 7 THEN LTRIM(RTRIM(SUBSTRING(@Source, 1, 6))) ELSE LTRIM(RTRIM(SUBSTRING(@Source, 1, 6))) + '-' + SUBSTRING(@Source, 7, 7) END; END |
■ 전화번호 '99999999999' 문자열을 '999-9999-9999' 문자열로 변환하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
CREATE FUNCTION dbo.ConvertTelephoneNumberString ( @Source NVARCHAR(11) ) RETURNS NVARCHAR(13) BEGIN DECLARE @SourceLength INT; SET @SourceLength = LEN(@Source); RETURN CASE WHEN @SourceLength < 4 THEN LTRIM(RTRIM(SUBSTRING(@Source, 1, 3))) WHEN @SourceLength < 8 THEN LTRIM(RTRIM(SUBSTRING(@Source, 1, 3))) + '-' + LTRIM(RTRIM(SUBSTRING(@Source, 4, 4))) ELSE LTRIM(RTRIM(SUBSTRING(@Source, 1, 3))) + '-' + LTRIM(RTRIM(SUBSTRING(@Source, 4, 4))) + '-' + SUBSTRING(@Source, 8, 4) END; END |
■ 날짜 문자열(yyyyMMdd)을 'yyyy-MM-dd' 포맷 문자열로 변환하는 방법을 보여준다. ▶ 예제 코드 (SQL)
|
CREATE FUNCTION dbo.ConvertDateString ( @Date NVARCHAR(8) ) RETURNS NVARCHAR(10) AS BEGIN RETURN CASE LEN(@Date) WHEN 8 THEN SUBSTRING(@Date, 1, 4) + '-' + SUBSTRING(@Date, 5, 2) + '-' + SUBSTRING(@Date, 7, 2) ELSE '' END; END |
■ Microsoft SQL Server Management Studio에서 테이블 디자인 변경 허용을 설정하는 방법을 보여준다. 1. Microsoft SQL Server Management Studio를 실행한다. 2. 도구/옵션
더 읽기
■ SqlConnection 클래스의 GetSchema 메소드를 사용해 SQL Server 데이타베이스 리스트를 가져오는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Data; using System.Data.SqlClient; SqlConnection sqlConnection = new SqlConnection(); ... DataTable table = sqlConnection.GetSchema("Databases"); |