0. DB NAME 알아내기
select * from master..sysdatabases;
모든 DATABASES의 NAME을 볼 수 있다.
select * from sysaltfiles;
C:Program FilesMicrosoft SQL ServerMSSQLdata 에 존재하는 파일 리스트를 확인해 존재하는 DB를 알 수 있다.
1. n번째 레코드 값 알아내기
select top 2 * from web..board where strNumber>2 order by strNumber asc;
primary key를 비교해 특정 번호보다 큰 값으로 출력하게 하여 다음 레코드를 구한다.
차집합을 이용한 쿼리
select top 1 * from web..board C WHERE Not Exists (select strNumber from web..board where strNumber<=C.strNumber-5) order by strNumber desc;
2. 레코드 비교시 'A'=(select 'A')가 아닌 A의 아스키 코드로 비교하려면??
0x41=(select ????)
1) 16진수를 10진수로 변환
select cast(0x41 as int) ;
2) 16진수/10진수를 문자열로 변환
select char(0x41) ;
select char(65) ;
3) 문자열을 ascii로 변환
select ascii('A');
4) 정수를 16진수로 변환
select master.dbo.fn_varbintohexstr(65);
cf) 이 때, 자리수가 8자리(1byte)가 되므로, 비교할 때는 3. 2)와 같이 활용한다.
select top 1 ascii(substring(strName,1,1)) from web..board C WHERE Not Exists (select strNumber from web..board where strNumber<=C.strNumber-1) order by strNumber desc;
3. 한글은 변환
convert를 활용해야 한다.
select convert(binary(10), '나');
select cast(convert(varbinary(8), '가') as bigint)--decimal은 overflow가 일어나기 때문에 bigint를 사용한다.
select cast(cast(convert(varbinary, '갇') as int) as decimal)
unicode도 가능하다
select unicode('너');
select nchar(45320);
댓글 달기