본문 바로가기
MS-SQL

유용한 쿼리

by 캡틴노랑이 2015. 7. 28.
반응형

날짜형식이 잘못된 데이터의 경우 날짜형식으로 바꾸는 쿼리 

1. 날짜형식인지 체크 (0이 나오면 날짜타입이 아님)
ex)
select ISDATE('2011-12-15 오후 5:37:35') -- 한글이 들어간 경우
select ISDATE('2011-02-30') -- 날짜범위에 벗어난 경우

-- 날짜 형식이 잘못된 데이터 찾아내기
select *
from 테이블
where isdate(날짜컬럼) = 0


2. 날짜타입에 한글이 들어가는 경우
2011-12-15 오후 5:37:35
2011-12-01 오전 9:50:06

==> 먼저 한글 들어간 부분을 제거하고, 날짜형식으로 바꾼다.
==> 오후에 해당되면 12시간을 더해준다.
SELECT
           case when CHARINDEX('후', wdate,1) > 0  then
               dateadd(hh, 12,  cast(replace(replace(wdate, '오전 ', ''), '오후 ', '') as datetime) )
           else
                cast(replace(replace(wdate, '오전 ', ''), '오후 ', '') as datetime)
           end


-----------
테이블 또는 컬럼 주석 보는 쿼리 

-- table 커멘트
select top 1000 object_name(major_id), value from sys.extended_properties
where minor_id=0 and class=1
order by 1

-- column 커멘트
select top 1000 object_name(major_id), col_Name(major_id, minor_id), value from sys.extended_properties
where minor_id>0 and class=1
order by 1

 

-- 세로를 가로로 보여주기

CREATE TABLE t1 (id INT, NAME VARCHAR(MAX))

 

INSERT t1 values (1,'Jamie')

INSERT t1 values (1,'Joe')

INSERT t1 values (1,'John')

INSERT t1 values (2,'Sai')

INSERT t1 values (2,'Sam')

INSERT t1 values (3,'Roger')

INSERT t1 values (4,'Walter')

INSERT t1 values (4,'Teddy')

GO

 

SELECT DISTINCT

STUFF( (SELECT ',' + name AS [text()] FROM t1 b WHERE b.id = a.id FOR XML PATH('')) ,  1,  1,  '' ) AS name_csv

FROM t1 a

WHERE id = 1

ORDER BY 1

--- 특정문자 개수 찾기 ( 문자가 |인 것 갯수찾기)

select col_tot,LEN(col_tot) - len(REPLACE(col_tot,'|',''))

from  MyPageCompany_Form

where com_code ='99997'

AND form_gubun ='AF040'


--- 날짜 형식  틀린것 찾아내기
select * from ACC089
where WDATE  not like '[2][0][01][0-9][-][01][0-9][-][0-3][0-9]%'


select * from ACC089
where ISDATE(WDATE) = 0 



-- 자릿수 - 3자리마다 콤마찍어주기(금액 처리시 유용함)
select replace(convert(varchar,convert(money,4890098240),1),'.00','')



테이블 또는 컬럼 주석 보는 쿼리
-- table 커멘트
 select top 1000 object_name(major_id), value from sys.extended_properties
where minor_id=0 and class=1
 order by 1
 
-- column 커멘트
 select top 1000 object_name(major_id), col_Name(major_id, minor_id), value from sys.extended_properties
where minor_id>0 and class=1
 order by 1

반응형

'MS-SQL' 카테고리의 다른 글

  (0) 2015.07.29
사용자 정의 함수(Function)  (0) 2015.07.29
stuff함수  (0) 2015.07.28
SQL 설정 관련  (0) 2015.07.28
대용량에서 사용하는 SQL  (0) 2015.07.28

댓글