GUI sin

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
--USE [TempTable]
--GO
/****** Object:  UserDefinedFunction [dbo].[fn_GetFileInfoInFullPathUsingXml]    Script Date: 2017-01-17 오후 1:43:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------------------------------------------------
--  파일경로에서 파일정보 가져오기
--  파일경로 문자열에서 파일명,경로,확장자가지오기(filepath:경로,filename:파일명,extension:확장자)
--  예: SELECT 데이터베이스명.소유자명.fn_GetFileInfoInFullPathUsingXml('filename','test.xml','/')
--  SELECT  dbo.fn_GetFileInfoInFullPathUsingXml('filename','c:/dkdk/test.xml','/')
--  SELECT  dbo.fn_GetFileInfoInFullPathUsingXml('filepath','c:/dkdk/test.xml','/')
--  SELECT  dbo.fn_GetFileInfoInFullPathUsingXml('extension','c:/dkdk/test.xml','/')
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
-- 프로시저 생성
-----------------------------------------------------------------------------------------------------------
 
ALTER FUNCTION     [dbo].[fn_GetFileInfoInFullPathUsingXml]
(
    @iGubun         NVARCHAR(10),   -- filepath:경로,filename:파일명,extension:확장자
    @iFullPath      NVARCHAR(MAX),
    @iDelimiter     NVARCHAR(10)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
 
 
    DECLARE @wTblSplit AS TABLE
    (
         Seq        INT     IDENTITY(1,1),
         Fragment   NVARCHAR(MAX)
    )
    DECLARE @wFileInfo  NVARCHAR(MAX)
    DECLARE @wXml       XML
    DECLARE @wMax       INT
 
    SELECT  @wFileInfo  = ''
    SELECT  @wMax       = 0
    SET     @wXml       = N'' + REPLACE(@iFullPath, @iDelimiter,''+ ''
 
    INSERT  INTO @wTblSplit(Fragment)
    SELECT  r.value('.','NVARCHAR(MAX)') as item
    FROM    @wXml.nodes('//root/r') as records(r)
 
    SELECT  @wMax   = MAX(Seq) FROM @wTblSplit
    IF  @iGubun = 'filepath'
    BEGIN
        IF  @wMax   = 1
        BEGIN
            SELECT  @wFileInfo = '.'
        END
        ELSE
        BEGIN
            SELECT  @wFileInfo  = COALESCE(@wFileInfo + @iDelimiter + Fragment, Fragment)
            FROM    @wTblSplit
            WHERE   Seq         < @wMax
            ORDER BY Seq
 
            SELECT  @wFileInfo  = SUBSTRING(@wFileInfo,2,LEN(@wFileInfo)) + '/'
        END
    END
    ELSE IF @iGubun = 'filename'
    BEGIN
        SELECT  @wFileInfo = Fragment FROM @wTblSplit WHERE Seq = @wMax
        SELECT  @wFileInfo = SUBSTRING(@wFileInfo,1,CHARINDEX('.',@wFileInfo))
    END
    ELSE IF @iGubun = 'extension'
    BEGIN
        SELECT  @wFileInfo = Fragment FROM @wTblSplit WHERE Seq = @wMax
        SELECT  @wFileInfo = SUBSTRING(@wFileInfo,CHARINDEX('.',@wFileInfo)+1,LEN(@wFileInfo)-CHARINDEX('.',@wFileInfo))
    END
 
    RETURN LTRIM(RTRIM(@wFileInfo))
 
END
cs


11

http://rocabilly.tistory.com/88 에 있던걸 extension 부분만 수정했다.

aaa.bbb.ccc.jpg 처럼 dot('.')이 여러개일경우 오류가 발생할수 있다.

Comment +0


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
CREATE FUNCTION [dbo].[fx_FormatUsingMask] 
(
    -- Add the parameters for the function here
    @input nvarchar(1000),
    @mask nvarchar(1000)
)
RETURNS nvarchar(1000)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @result nvarchar(1000= ''
    DECLARE @inputPos int = 1
    DECLARE @maskPos int = 1
    DECLARE @maskSign char(1= ''
 
    WHILE @maskPos <= Len(@mask)
    BEGIN
        set @maskSign = substring(@mask, @maskPos, 1)
 
        IF @maskSign = '#'
        BEGIN
            set @result = @result + substring(@input, @inputPos, 1)
            set @inputPos += 1
            set @maskPos += 1
        END
        ELSE
        BEGIN
            set @result = @result + @maskSign
            set @maskPos += 1
        END
    END
    -- Return the result of the function
    RETURN @result
 
END
cs

MSSQL 버전마다 어떤지는 모르겠지만, 적당한 함수를 못찾아서 인터넷을 검색해보니 이런 녀석이 나오드라.

사용 예)
1
select dbo.fx_FormatUsingMask('201503050900''####-##-## ##:##:00')
cs




Comment +0


1
2
3
4
5
6
7
8
9
10
11
12
-- 테이블 이름 변경
-- CustomerName 이라는 테이블을 Customer 라는 이름으로 변경
sp_rename 'CustomerName''Customer'
 
-- 컬럼 이름 변경
-- Test 테이블의 CustomerName 이라는 컬럼을 Customer라는 이름으로 변경
sp_rename 'reserve.[CustomerName]''Customer''COLUMN'
 
-- 컬럼 타입 변경
-- Test 테이블의 Customer 컬럼의 타입을 varchar(10)으로 변경
ALTER TABLE Test
ALTER COLUMN Customer varchar(10)
cs

종종 사용하는데 왜 기억을 못하는 걸까? ㅠ_ㅜ


Comment +0


1
2
3
4
5
6
7
8
9
10
11
--1. 'sample' 테이블에 'add_key'  컬럼 추가
Alter Table [sample]
Add [add_key] varchar(5Not Null
 
--2. 기존 기본키 삭제(키이름:PK_sample)
Alter Table [sample]
Drop Constraint PK_sample
 
--3. 새 기본키로 설정
Alter Table [sample]
Add Constraint PK_sample Primary Key ([add_key])
cs



Comment +0


1
2
3
4
5
6
7
8
9
DECLARE @IDATE varchar(8)
 
SET @IDATE = '20090102'
 
/* 말일구하기 */
SELECT Convert(Varchar, DATEADD(DAY,-DATEPART(DD,DATEADD(MONTH,1,@IDATE)),DATEADD(MONTH,1,@IDATE)), 112)
 
/* 초일구하기 */
SELECT Convert(Varchar, DATEADD(DAY,1,DATEADD(DAY,-DATEPART(DD,@IDATE),@IDATE)), 112)
cs


Comment +0

① sp_lock
프로시저를 실행하여 mode가 x 인 녀석을 확인

② dbcc inputbuffer(spid)
클라이언트에서 MSSQL로 보낸 최종 명령문 표시, 위의 1번에서 X인 녀석의 spid를 입력하면 해당 테이블이 출력된다.

③ kill spid
문제가 되는 spid를 kill 합니다.

Comment +0


1
2
3
4
5
--사용
SELECT CONVERT(CHAR(8), DATEADD(M, 1'20090522'), 112)
 
--결과
20090622
cs


Comment +0


Microsoft SQL 2000 에서 특정 Database 의 트랜잭션 로그의 최대 파일 크기를 조정 하려고 하니 다음과 같은 오류 메시지가 출력되었다. Microsoft SQL-DMO (ODBC SQLState: 42000)

ErrorMicrosoft SQL-DMO (ODBC SQLState: 42000)



Comment +0