336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

언제부터선가 session을 사용하게 되었습니다.


그런데 또 언제서부턴가, form에서 전송후, Back을 하게 되면,


form을 재전송하지 않는다는, 백지 화면이 뜨더군요.


처음에는 원인조차 파악하지 못하다가, 최근에야 그 이유와 해결책을 알아내었습니다.




보통 session을 사용하실때, session_start() 함수를 사용하게 됩니다.


저같은 경우는 공통 헤더 파일의 상단에 이 함수를 자동으로 실행하게 해놓습니다. 물론 php.ini 셋팅을 통해 자동으로 실행되게 할 수도 있지만,


서버간의 프로그램 이식성을 위해 저같은 경우엔 프로그램 레벨에서 실행해 줍니다.


php.ini에 보시면 요런 부분이 있습니다.




session.cache_limiter = nocache ; set to nocache,private,public} to




이건 세션이 스타트될때 참고되는 부분중 하나입니다.


제 서버의 경우엔 기본값이 nocache로 되어 있습니다.


nocache의 경우엔, 브라우저에 캐슁돼지 않는 것은 기본이고, form도 재전송되지 않습니다.


그래서 form을 전송하고 난 후의 페이지에서 history.back()을 할경우, 하얀 화면이 나오는 것입니다.


그러면 어떻게 해줘야 하냐구요..




php.ini의 윗 구절을 자세히 보시면, cache_limiter를 세가지로 셋팅할 수 있다고 되어 있습니다. "nocache", "private", "public"...


document를 찾아보니..




Setting the cache limiter to nocache, for example, would disallow any client-side caching.


A value of public, however, would permit caching. It can also be set to private, which is slightly more restrictive than public.




"public"은 브라우저 캐슁을 허용하는 것이고, "private"는 public과 거의 유사하지만, 조금더 제한적이라고 하고 있습니다.


실제 이용을 해본결과, 저는 둘의 차이를 이해하지 못하겠습니다.


근데 이 둘을 이용할 경우에, history.back() 문제는 해결되지만, 반대로 정말 캐슁이 잘되어, 내용이 변하질 않습니다.


환장할 노릇이지여~~




이곳 저곳을 쑤시고 다니고, 모두 테스트 해본 결과,,


그 답을 찾았습니다.




바로 'nocache, must-revalidate' 입니다.




이것은 캐싱은 허용하지 않되, form은 재전송할 수 있도록 한다는 것입니다.




이걸 사용해본 결과, 현재 일주일정도 테스트해봤는데, 다이나믹 컨텐츠의 경우 컨텐츠도 잘 변경되고, form 전송시에서 back이 아주 잘됩니다.


cache_limiter는 php.ini에서 셋팅하지 않고 함수호출로도 사용할 수있습니다.


session_cache_limiter('nocache, must-revalidate');


이렇게 해주면 , php.ini에 셋팅한 것과 동일한 효과를 나타냅니다. 아까도 말씀드렸지만, 서버간에 서로 셋팅이 다를 수 있어서, 저는 소프트웨어 레벨에서 이런 문제점들을 다루려고 최대한 노력합니다.




저 함수를 반드시 session_start() 전에 호출해 주어야만 적용이 됩니다.


그런데 간혹, form 재전송도 허용하지 않아야 할때가 있습니다. 즉 완전 nocache 해주어야 할 때가 있다는 것이죠..




예를 들면, 쇼핑몰 등에서 결제 정보 입력 페이지 등은, 보안상의 이유나 중복 결제 방지를 위해서 form을 재전송해서는 안되는 경우입니다.




이럴때는 cache_limiter를 nocache로 셋팅합니다.




이런것들을 융통성있게 할 수 있도록 다음과 같은 방법을 저는 사용합니다.




이건 제가 공통으로 프로그램파일의 젤 상단에 포함시키는 헤더 파일의 일부분입니다.


if($SESSION_CACHE_LIMITER){


session_cache_limiter($SESSION_CACHE_LIMITER);


} else {


session_cache_limiter('nocache, must-revalidate');


}


session_start() ;




이렇게 해서 기본값은 폼 재전송을 허용하도록 하고, 특별하게 셋팅할 경우가 있을때에는, 이 헤더파일을 포함시키기 전에, $SESSION_CACHE_LIMITER라는 변수에 값을 대입시켜 줍니다.


많은 도움이 되시길 바라면..


출처 : PHPSCHOOL , shellbru님의 글

'IT > PHP' 카테고리의 다른 글

PHP XSS filter function  (0) 2015.04.20
php-mysql 개행 적용.  (0) 2015.04.03
PHP Server 변수. $_SERVER  (0) 2015.03.12
PHP 파일 업로드 ( input type file )  (0) 2013.07.19
php $_SERVER, $_Server  (0) 2013.07.19
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

HTML5 / CSS3 placeholder 폰트 색상 지정



::-webkit-input-placeholder { /* WebKit browsers */

    color:    #aaa; font-size:12px;

}

:-moz-placeholder { /* Mozilla Firefox 4 to 18 */

    color:    #aaa; font-size:12px;

}

::-moz-placeholder { /* Mozilla Firefox 19+ */

    color:    #aaa; font-size:12px;

}

:-ms-input-placeholder { /* Internet Explorer 10+ */

    color:    #aaa; font-size:12px;

}

'IT > html_css' 카테고리의 다른 글

iframe 문제점.  (0) 2015.05.21
placeholder 줄바꿈.  (0) 2015.05.21
다른 도메인 ifame 리사이징.  (0) 2015.05.08
iframe resize, resizing, 리사이징.  (0) 2015.04.27
div 스크롤. div scroll.  (0) 2014.12.31
Posted by 당양부부34

2015. 3. 12. 14:29 IT

이클립스 주요 기능

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

한줄 지우기 : Ctrl + D

헤더/소스 전환 : Ctrl + Tab

다음/이전 파일 : Ctrl + PgUp, Ctrl + PgDn

키보드로 쓰는 기능들...

파일 열기 : Ctrl + Shift + R, 파일명 타이핑

함수 네비게이션 : Ctrl + O, 함수명 타이핑

함수, 객체, 기타, 토탈 검색 : Ctrl + T, 타이핑

전체 검색 : Ctrl + H, 또는 Ctrl + Sift + G <== 검색 결과에 차이가 있음.

바로 찾아가기 : Ctrl + L click

이전 위치로 : Alt + Left

마지막 편집 위치로 : Ctrl + Q

SVN 업데이트 : Ctrl + Alt + U

SVN 동기화 : Ctrl + Alt + S


우클릭 마우스로 쓰는 기능들...

New / Class, Header, Source

Recfactor / Rename

SVN 커밋 @ 동기화 윈도우

Export

자주 쓰는 윈도우...

Make targets

Project explorer

Task list


Posted by 당양부부34

2015. 3. 12. 09:43 IT/PHP

PHP Server 변수. $_SERVER

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

$_SERVER['DOCUMENT_ROOT'] : 사이트 루트의 물리적 경로. ex) /home/dyang34/www



$_SERVER['HTTP_ACCEPT_ENCODING'] : 인코딩 받식. ex) gzip, deflate



$_SERVER['HTTP_ACCEPT_LANGUAGE'] : 언어. ex) ko



$_SERVER['HTTP_USER_AGENT'] : 사이트 접속한 클라이언트 프로그램 정보. ex) Mozilla/4.0(compatible; MSIE 7.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705



$_SERVER['REMOTE_ADDR'] : 사이트 접속한 클라이언트의 IP. ex) 192.168.10.111



$_SERVER['HTTP_REFERER'] : 현제 페이지로 오기전의 페이지 주소값. <a> 또는 <form> 태그로 전송시 값이 넘어옴. 

ex) http://dyang34.tistory.com/view.php 



$_SERVER['SCRIPT_FILENAME'] : 실행되고 있는 파일의 전체경로. ex) /home/dyang34/www/index.php



$_SERVER['SERVER_NAME'] : 사이트 도메인 : dyang34.tistory.com (virtual host에 지정한 도메인)



$_SERVER['HTTP_HOST'] : 사이트 도메인 : dyang34.tistory.com (접속할 때 사용한 도메인)



$_SERVER['SERVER_PORT'] : 사이트 포트. ex) 80



$_SERVER['SERVER_SOFTWARE'] : 서버의 소프트웨어 환경

ex) Apache/1.1.1 (Unix) PHP/5.2.7 mod_fastcgi/2.2.10 mod_throttle/3.1.2 mod_ssl/2.8.6



$_SERVER['GATEWAY_INTERFACE'] : CGI 정보. ex) CGI/1.1



$_SERVER['SERVER_PROTOCOL'] : 사용된 서버 프로토콜. ex) HTTP/1.1



$_SERVER['REQUEST_URI'] : 현재페이지의 주소에서 도메인 제외. ex) /index.php?user=dyang34&name=na



$_SERVER['PHP_SELF'] : 현재페이지의 주소에서 도메인과 넘겨지는 값 제외. ex) /test/index.php

 - 파일명만 가져올때 : basename($_SERVER['PHP_SELF']);



$_SERVER['APPL_PHYSICAL_PATH'] : 현재페이지의 실제 파일 주소. ex) /home/dyang34/www/



$_SERVER['QUERY_STRING'] : GET 방식의 파일명 뒤에 붙어서 넘어오는 파라미터 값. ex) ?user=dyang34&name=na



모든 환경 변수를 보고 싶으면 print_r($GLOBALS);

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

heidi에서 자동 정렬 : Ctrl+F8

heidi에서 선택 실행 : Ctrl+F9

'IT > MySQL' 카테고리의 다른 글

MySql auto_increment 값 알아오기.  (0) 2015.04.27
Mysql 날짜 함수  (0) 2015.04.24
Mysql 반올림, 올림, 버림.  (0) 2015.04.20
MYSQL 에서 SP exit. 중간에 나가기.  (0) 2015.04.15
mysql 설치  (0) 2013.08.16
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 첨부파일 링크주소

<a href="/inc/download.asp?filesavename=<%=Server.URLEncode(GetDataFile(2,i))%>&filename=<%=Server.URLEncode(GetDataFile(1,i))%>&filepath=<%=PhysicalDocUrl%>" onfocus="this.blur();"><%=GetDataFile(1,i) %></a><Br>



2. download.asp

<%

    fileName = Request("filename")

    fileSaveName = Request("filesavename")

    filePath = Request("filepath")


'    Response.Write fileName&"<br/>"

'    Response.Write fileSaveName&"<br/>"

'    Response.Write filePath

'    Response.End



'    Response.Expires = 0

'    Response.Buffer = True

'    Response.Clear

'

'    Set fs = Server.CreateObject("Scripting.FileSystemObject")

'

'         '파일이 있을경우 파일을 스트림 형태로 열어 보낸다.

'         Response.ContentType = "application/octet-stream"

'         Response.CacheControl = "public"

'         Response.AddHeader "Content-Disposition","attachment;filename=" & filename

'

'        Set Stream=Server.CreateObject("ADODB.Stream")

'         Stream.Open

'         Stream.Type=1

'         Stream.LoadFromFile filepath & fileSaveName

'         Response.BinaryWrite Stream.Read

'         Stream.close

'         Set Stream = nothing

'     

'     Set fs = Nothing


    Response.ContentType = "application/unknown"

    Response.AddHeader "Content-Disposition","attachment; filename=" & Server.URLPathEncode(fileName)    

'Server.URLPathEncode 처리를 안하면 한글 파일명이 깨진다.

    Set objStream = Server.CreateObject("ADODB.Stream")

    objStream.Open

    objStream.Type = 1

    objStream.LoadFromFile filePath & fileSaveName


    download = objStream.Read

    Response.BinaryWrite download 


    Set objstream = nothing 

%>

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

<div id="sample" 

          style="overflow:auto; width:100%; height:30px; line-height:150%">

                 스크롤이 되는 div<br>

                 스크롤이 되는 div<br>

                 스크롤이 되는 div<br>

                 스크롤이 되는 div<br>

                 스크롤이 되는 div<br>

                 스크롤이 되는 div<br>

        

</div>


위 코드의 style에서 "overflow" 라는 것이 핵심인데, overflow에 auto 혹은 scroll이라고 주면, scrollbar가 나타나며, scroll이 된다.


스크롤바가 맘에 들지 않는다면, "overflow: hidden" 이라고 주어, scrollbar가 사라지게 한 후, javascript로 원하는 것을 만들어 낼 수 있다.


아래 javascript는 위 또는 아래로 div를 스크롤하는 예제이다.

이것을 응용하면, 이쁘고 훌륭한 scroll div를 만들 수 있을 것이다.


        function doScrollerIE(dir, src, amount) 

        {

                if (amount==null) amount=10;

                if (dir=="up")

                        document.all[src].scrollTop-=amount;

                else

                        document.all[src].scrollTop+=amount;

        }


'IT > html_css' 카테고리의 다른 글

iframe 문제점.  (0) 2015.05.21
placeholder 줄바꿈.  (0) 2015.05.21
다른 도메인 ifame 리사이징.  (0) 2015.05.08
iframe resize, resizing, 리사이징.  (0) 2015.04.27
HTML5 / CSS3 placeholder 폰트 색상 지정  (0) 2015.03.17
Posted by 당양부부34

2014. 12. 30. 11:30 IT/MSSQL

MSSQL 함수 모음

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
- 집계 합수
  집계 함수는 어디에 사용되는가?
  집계 함수는 값 집합에 대한 계산을 수행하고 단일 값을 반환한다. 
  COUNT를 제외한 집계 함수는 Null 값을 무시한다. 
  집계 함수는 SELECT 문의 GROUP BY 절과 함께 사용하는 경우가 많다.
  집계 함수는 다음 경우에서만 식으로 사용할 수 있다. 
  
  SELECT 문의 선택 목록(하위 쿼리 또는 외부 쿼리) 
  COMPUTE 또는 COMPUTE BY 절
  HAVING 절

AVG 
그룹에서 값의 평균을 반환한다. Null 값은 무시된다.
BINARY_CHECKSUM 
테이블의 행 또는 식의 목록에 대해 계산된 이진 검사값을 반환한다. 
BINARY_CHECKSUM을 사용하여 테이블에 행에 대한 변경 사항을 찾을 수 있다.
CHECKSUM 
테이블의 행 또는 식의 목록에 대해 계산한 검사값을 반환한다. 
CHECKSUM 값은 해시 인덱스를 작성하는 데 사용하기 위한 것이다.
CHECKSUM_AGG 
그룹에서 값의 검사값을 반환한다. 
Null 값은 무시된다.
COUNT 
그룹에 포함된 항목 개수를 반환한다.
COUNT_BIG 
그룹에 포함된 항목 개수를 반환한다. 
COUNT_BIG은 COUNT 함수와 비슷하며 반환값만 다르다. 
COUNT_BIG은 bigint 데이터 형식 값을 반환하고 COUNT는 int 데이터 형식 값을 반환한다.
GROUPING 
행이 CUBE 또는 ROLLUP 연산자를 통해 추가될 때 추가 열의 출력이 1이 되거나 행이 CUBE 또는 ROLLUP의 결과가 아닐 때 추가 열의 출력이 0이 되도록 하는 집계 함수이다. 
그룹화는 CUBE 또는 ROLLUP 연산자가 들어 있는 GROUP BY 절과 관련된 선택 목록에서만 사용될 수 있다.
MAX 
식의 최대값을 반환한다.
MIN 
식에서 최소값을 반환한다.
SUM
식의 모든 값의 합계 또는 DISTINCT 값만 반환한다. 
SUM과 함께 사용할 수 있는 것은 숫자 열이다. Null 값은 무시된다.
STDEV 
특정 식의 모든 값에 대한 통계적 표준 편차를 반환한다.
STDEVP 
특정 식의 모든 값의 모집단에 대한 통계적 표준 편차를 반환한다.
VAR 
지정한 식에 있는 모든 값의 통계적 분산을 반환한다.
VARP 
지정한 식에 있는 모든 값의 모집단에 대한 통계적 분산을 반환한다.


 
- 수치 연산 함수
  수치 연산 함수는 우리가 쉽게 이해하는 수치 연산의 결과값을 반환한다. 
  일반적인 인수에 의해 제공되는 값을 기반으로 계산을 수행하고 값을 반환한다.
  ABS, CEILING, DEGREES, FLOOR, POWER, RADIANS, SIGN 등의 산술 함수는 입력 값과 동일한 데이터 형식을 갖는 값을 반환한다. 
  EXP, LOG, LOG10, SQUARE, SQRT를 포함하여 삼각 함수와 그 밖의 함수는 입력 값을 float로 캐스트하고 float 값을 반환한다. 
  RAND를 제외한 모든 수치 연산 함수는 입력 값과 동일한 형식으로 반환하는 확정적인 함수이다.
ABS 
지정한 수식의 절대값을 양수로 반환한다.
ACOS 
코사인 값이 지정한 float 식인 각도를 라디안으로 반환한다. 
아크코사인이라고도 한다.
ASIN 
사인 값이 지정한 float 식인 각도를 라디안으로 반환한다. 
아크사인이라고도 한다
ATAN 
탄젠트 값이 지정한 float 식인 각도를 라디안으로 반환한다. 
아크탄젠트라고도 한다.
ATN2 
탄젠트 값이 지정한 두 개의 float 식 사이에 속하는 각도를 라디안으로 반환한다. 
아크탄젠트라고도 한다.
CEILING 
지정한 숫자 식 이상인 최소 정수를 반환한다.
COS 
지정한 식에서 지정한 각도의 삼각법 코사인을 라디안 단위로 반환한다.
COT 
지정한 float 식에서 지정한 각도의 삼각법 코탄젠트를 라디안 단위로 반환한다.
DEGREES
지정된 라디안 단위의 각도에 대해 해당하는 각도를 도 단위로 반환합니다.
EXP 
특정 float 식의 지수 값을 반환한다.
FLOOR 
주어진 숫자 식 이하인 최대 정수를 반환한다.
LOG 
주어진 float 식의 자연 로그를 반환한다.
LOG10 
주어진 float 식의 기수 10 로그를 반환한다.
PI 
PI의 상수 값을 반환한다.
POWER 
주어진 식의 값을 지정된 거듭제곱으로 반환한다.
 
RADIANS 
숫자 식을 도 단위로 입력하면 라디안으로 반환한다.
RAND
0부터 1까지의 임의 float 값을 반환한다.
ROUND 
특정 길이나 정밀도로 반올림한 숫자 식을 반환한다.
SIGN 
주어진 식의 양수(+1), 영(0) 또는 음수(-1) 기호를 반환한다.
SIN 
특정 각도(라디안)의 삼각 사인을 근사 숫자(float) 식으로 반환한다.
SQUARE 
특정 식의 제곱을 반환한다.
SQRT 
특정 식의 제곱근을 반환한다.
TAN 
입력한 식의 탄젠트를 반환한다.


- 날짜 및 시간 함수
  날짜 및 시간 함수는 다음과 같은 특징이 있다
  날짜 및 시간 함수는 우리가 쉽게 이해하는 날짜 및 시간의 결과값을 반환한다. 
  일반적인 인수에 의해 제공되는 값을 기반으로 계산을 수행하고 문자열, 숫자 또는 날짜 및 시간 값을 반환한다.
DATEADD 
지정한 날짜에 시간 간격을 더하여 새 datetime 값을 반환한다.
DATEDIFF 
지정한 두 날짜 간에 교차되는 날짜와 시간 경계값을 반환한다.
DATENAME 
지정한 날짜의 특정 날짜 부분을 나타내는 문자열을 반환한다.

DATEPART 
지정한 날짜의 특정 날짜 부분을 나타내는 정수를 반환한다.
DAY 
지정한 날짜의 일 부분을 나타내는 정수를 반환한다.
GETDATE 
현재 시스템 날짜와 시간을 datetime 값의 Microsoft SQL Server 표준 내부 형식으로 반환한다.
GETUTCDATE 
국제 표준시 또는 그리니치 표준시를 나타내는 datetime 값을 반환한다. 현재 UTC 시간은 해당 지역의 현재 시간과 SQL Server가 실행 중인 컴퓨터 운영 체제의 표준 시간대를 기준으로 반환한다.
MONTH 
지정된 날짜의 월 부분을 나타내는 정수를 반환한다.
YEAR 
지정한 날짜의 연도 부분을 표시하는 정수를 반환한다.



- 문자열 함수
  문자열 함수는 다음과 같은 특징이 있다
  문자열 함수는 우리가 쉽게 이해하는 문자열의 결과값을 반환한다. 
  일반적인 인수에 의해 제공되는 값을 기반으로 계산을 수행하고 숫자 또는 문자열 값을 반환한다.
ASCII 
문자 식에서 가장 왼쪽 문자의ASCII 코드 값을 반환한다.
CHAR 
int ASCII 코드를 문자로 변환한다.
CHARINDEX 
문자열에서 지정한 식의 시작 위치를 반환한다.
DIFFERENCE 
두 문자 식에서 SOUNDEX 값의 차이를 정수로 반환한다.
LEFT 
왼쪽에서부터 지정된 문자 수에서 시작하는 문자열의 일부를 반환한다.
LEN 
주어진 문자열 식의 바이트 수 대신 후행 공백을 제외한 문자 수를 반환한다.
LOWER 
대문자로 된 데이터를 소문자로 변환한 후 문자 식을 반환한다.
LTRIM 
선행 공백을 제거한 후 문자 식을 반환한다.
NCHAR 
유니코드 표준에서 정의된 대로 주어진 정수 코드로 유니코드 문자를 반환한다.
PATINDEX 
유효한 모든 text 및 character 데이터 형식에서 패턴이 처음으로 지정된 식에서 발생한 시작 위치를 반환하거나 패턴을 찾지 못하는 경우에는 0을 반환한다.
REPLACE 
첫째 문자열 식에서 둘째 문자열 식의 모든 인스턴스를 찾아 셋째 식으로 반환한다.
QUOTENAME 
입력 문자열이 유효한 기호와 함께 유니코드 문자열을 반환한다.
REPLICATE 
지정한 횟수만큼 문자 식을 반복한다.
REVERSE 
문자 식을 반대로 반환한다.
RIGHT 
오른쪽부터 지정한 수만큼의 문자를 제외한 나머지 문자열 일부를 반환한다.
RTRIM 
모든 후행 공백을 제거한 다음 문자열을 반환한다.
SOUNDEX 
두 문자열의 유사성을 평가하기 위한 네 글자(SOUNDEX) 코드를 반환한다.
SPACE 
반복된 공백의 문자열을 반환한다.
STR 
숫자 데이터에서 변환된 문자 데이터를 반환한다.
STUFF 
지정한 시작 지점에서 지정한 문자 길이를 삭제한 다음 다른 문자 집합을 삽입한다.
SUBSTRING 
문자, 이진, 텍스트, 이미지 식의 일부를 반환한다.
UNICODE 
유니코드 표준에서 정의한 대로 입력 식에 있는 첫 글자의 정수 값을 반환한다.
UPPER 
문자 식을 대문자로 변환된 소문자 데이터로 반환한다.


- 구성 함수
  구성 함수는 다음과 같은 특징이 있다
  구성 함수는 현재 구성된 서버의 옵션 설정에 대한 값들을 반환한다.  
  모든 구성 함수는 항상 동일한 값을 반환하지 않는 비확정성 함수이다.
@@ATEFIRST 
매주 지정된 첫째 날을 나타내는 SET DATEFIRST 매개 변수의 현재 값을 반환한다. 
1은 월요일, 2는 화요일 순으로 하여 7은 일요일이다.
@@DBTS 
현재 데이터베이스에 대해 현재 timestamp 데이터 형식의 값을 반환한다.
@@LANGID 
현재 사용 중인 언어의 로컬 언어 식별자(ID)를 반환한다.
@@LANGUAGE 
현재 사용 중인 언어의 이름을 반환한다.
@@LOCK_TIMEOUT 
현재 세션의 현재 잠금 시간 제한 설정을 밀리초 단위로 반환한다.
@@MAX_CONNECTIONS 
SQL Server에서 허용한 최대 동시 사용자 연결 수를 반환한다.
 
@@MAX_PRECISION 
현재 서버에 설정되어 있는 decimal과 numeric 데이터 형식의 정밀도 수준을 반환한다.
@@NESTLEVEL 
현재 저장 프로시저 실행의 중첩 수준을 반환한다.
@@OPTIONS 
현재 SET 옵션에 대한 정보를 반환한다.
@@REMSERVER 
원격 SQL Server 데이터베이스 서버의 이름이 로그인 레코드에 나타날 때 이름을 반환한다.
@@SERVERNAME 
SQL Server를 실행하는 동안 로컬 서버의 이름을 반환한다.
@@SERVICENAME 
SQL Server가 실행 중인 레지스트리 키의 이름을 반환한다. @@SERVICENAME은 현재 인스턴스가 기본 인스턴스인 경우MSSQLServer를 반환한다. 이 함수는 현재 인스턴스가 명명된 인스턴스이면 인스턴스 이름을 반환한다.
@@SPID 
현재 사용자 프로세스의 서버 프로세스 식별자(ID)를 반환한다.
@@TEXTSIZE 
SELECT 문이 반환하는 text 또는 image 데이터의 최대 길이를 바이트 단위로 지정하는 SET 문의 현재 TEXTSIZE 옵션 값을 반환한다.
@@VERSION 
현재 설치되어 있는 SQL Server의 날짜, 버전, 프로세서 유형을 반환한다.



- 메타 데이터 함수
  메타 데이터 함수는 다음과 같은 특징이 있다
  메타 데이터 함수는 데이터베이스와 데이터베이스 개체에 대한 정보를 반환한다. 
  모든 메타 데이터 함수는 항상 동일한 값을 반환하지 않는 비확정성 함수이다.
COL_LENGTH 
열의 정의된 길이(바이트)를 반환한다.
COL_NAME 
지정한 테이블 ID와 열 ID에 대한 데이터베이스 열의 이름을 반환한다.
COLUMNPROPERTY 
열 또는 프로시저 매개 변수에 대한 정보를 반환한다.
DATABASEPROPERTY 
주어진 데이터베이스와 속성 이름에 대해 명명된 데이터베이스 속성 값을 반환한다.
DATABASEPROPERTYEX 
지정한 데이터베이스에 대해 지정한 데이터베이스 옵션이나 속성의 현재 설정을 반환한다.
DB_ID 
데이터베이스 ID 번호를 반환한다.
DB_NAME
데이터베이스 이름을 반환한다.
FILE_ID 
현재 데이터베이스의 주어진 논리 파일 이름의 파일 ID 번호를 반환한다.
FILE_NAME 
주어진 파일 ID에 대한 논리 파일 이름을 반환한다.
FILEGROUP_ID 
주어진 파일 그룹 이름의 파일 그룹 ID를 반환한다.
FILEGROUP_NAME 
주어진 파일 그룹 ID에 대한 파일 그룹 이름을 반환한다.
FILEGROUPPROPERTY 
파일 그룹과 속성 이름이 주어졌을 때 지정된 파일 그룹 속성 값을 반환한다.
FILEPROPERTY 
파일 이름과 속성 이름이 주어졌을 때 지정된 파일 이름 속성 값을 반환한다.
fn_listextendedproperty 
데이터베이스 개체의 확장 속성 값을 반환한다.

FULLTEXTCATALOGPROPERTY 
전체 텍스트 카탈로그 속성에 대한 정보를 반환한다.
FULLTEXTSERVICEPROPERTY 
전체 텍스트 서비스 수준 속성에 대한 정보를 반환한다.
INDEX_COL 
인덱스된 열 이름을 반환한다.
INDEXKEY_PROPERTY 
인덱스 키에 대한 정보를 반환한다.
INDEXPROPERTY 
주어진 테이블 ID, 인덱스 이름, 속성 이름에 대해 명명된 인덱스 속성 값을 반환한다.
OBJECT_ID 
데이터베이스 개체 ID를 반환한다.
OBJECT_NAME 
데이터베이스 개체 이름을 반환한다.
OBJECTPROPERTY 
현재 데이터베이스의 개체에 대한 정보를 반환한다.
@@PROCID 
현재 프로시저의 저장 프로시저 식별자(ID)를 반환한다.
SQL_VARIANT_PROPERTY 
sql_variant 값에 대한 기본 데이터 형식 및 기타 정보를 반환한다.
TYPEPROPERTY 
데이터 형식에 관한 정보를 반환한다.



- 커서 함수
  커서 함수는 다음과 같은 특징이 있다
  커서 함수는 커서에 대한 정보를 반환한다. 
  모든 커서 함수는 항상 동일한 값을 반환하지 않는 비확정성 함수이다.
@@CURSOR_ROWS 
현재 연결에서 마지막으로 열린 커서에 있는 자격을 갖춘 행의 수를 반환한다.
CURSOR_STATUS 
저장 프로시저의 호출자가 프로시저에서 주어진 매개 변수에 대해 커서 및 결과 집합을 반환한다.
@@FETCH_STATUS 
현재 연결로 열린 모든 커서에 대해 실행된 마지막 FETCH 문의 상태를 반환한다.



- 행 집합 함수
  행 집합 함수는 다음과 같은 특징이 있다
  행 집합 함수는 테이블 참조 대신 사용할 수 있는 개체를 반환한다. 
  모든 행 집합 함수는 항상 동일한 값을 반환하지 않는 비확정성 함수이다.
CONTAINSTABLE 
문자 기반 데이터 형식이 포함된 열에서 특정 단어나 구와 정확히 일치하거나 비슷하게 일치하는 단어를 검색하거나, 서로 근접한 단어 검색, 가중치 검색에서 일치한 0개 이상의 행이 있는 테이블을 반환한다.
FREETEXTTABLE 
텍스트와 의미는 일치하지만 단어는 정확히 일치하지 않는 값의 문자 기반 데이터 형식이 포함된 열에 대해 행이 없거나 하나 이상인 테이블을 반환한다.
OPENDATASOURCE 
연결된 서버 이름을 사용하지 않고 네 부분으로 된 개체 이름의 연결 정보를 제공한다.
OPENQUERY 
OLE DB 데이터 원본인 주어진 연결된 서버에 대해 지정된 통과 쿼리를 실행한다. 쿼리는 여러 결과 집합을 반환하지만 OPENQUERY는 첫 번째 것만 반환한다.
OPENROWSET 
OLE DB 데이터 원본에서 원격 데이터를 액세스하는 데 필요한 모든 연결 정보를 제공한다. 쿼리는 여러 결과 집합을 반환하지만 OPENROWSET는 첫 번째 것만 반환한다.
OPENXML 
OPENXML은 XML 문서에 대한 행 집합 뷰를 제공한다. OPENXML이 행 집합 공급자이므로 테이블, 뷰 또는 OPENROWSET 함수 등의 행 집합 공급자가 표시될 수 있는 Transact-SQL 문에 OPENXML을 사용할 수 있다.



-보안 함수
 보안 함수는 다음과 같은 특징이 있다
 보안 함수는 과거 버전에서 저장프로시저가 담당했던 부분을 함수로 만들어 2000에서 제공하는 함수로 사용자와 역할에 관한 정보를 반환한다. 모든 보안 함수는 항상 동일한 값을 반환하지 않는 비확정성 함수이다.
fn_trace_geteventinfo 
추적한 이벤트에 대한 정보를 반환한다.
fn_trace_getfilterinfo 
지정한 추적에 적용되는 필터에 대한 정보를 반환한다.
fn_trace_getinfo 
지정한 추적이나 기존 추적에 대한 정보를 반환한다.
fn_trace_gettable 
추적 파일 정보를 테이블 형식으로 반환한다.
HAS_DBACCESS 
사용자가 지정된 데이터베이스를 액세스할 수 있는지에 대한 정보를 반환한다.
IS_MEMBER 
현재 사용자가 지정된 Windows Server 그룹 또는 Microsoft SQL Server 역할의 구성원인지 여부를 표시한다.
IS_SRVROLEMEMBER 
현재 사용자 로그인이 지정된 서버 역할의 구성원인지 여부를 나타낸다.
SUSER_SID 
사용자 로그인 이름에 대한 보안 ID(SID)를 반환한다.
SUSER_SNAME 
사용자 보안 ID(SID)로부터 로그인 ID 이름을 반환한다.
USER_ID 
사용자의 데이터베이스 ID 번호를 반환한다.
USER 
기본값이 지정되지 않은 경우에 현재 사용자의 데이터베이스 사용자 이름에 대해 시스템이 제공한 값을 테이블에 삽입할 수 있도록 허용한다.


- 텍스트 및 이미지 함수
  텍스트 및 이미지 함수는 다음과 같은 특징이 있다
  텍스트 및 이미지 함수는 텍스트와 이미지 포인터의 위치를 반환한다. 
  모든 텍스트 및 이미지 함수는 항상 동일한 값을 반환하지 않는 비확정성 함수이다.
ATINDEX 
유효한 모든 text 및 character 데이터 형식에서 패턴이 처음으로 지정된 식에서 발생한 시작 위치를 반환한다.
TEXTPTR 
varbinary 형식의 text, ntext 또는 image 열에 해당하는 텍스트 포인터 값을 반환한다.
TEXTVALID 
주어진 텍스트 포인터가 유효한지 여부를 반환한다.


'IT > MSSQL' 카테고리의 다른 글

콤마로 된 문자열을 테이블로 변환 함수  (0) 2014.11.26
FullText Search  (0) 2014.10.13
MSSQL 인덱스(Index) 생성  (0) 2014.08.20
Code Formatter. 코드 정렬 도구.  (0) 2014.06.10
MSSQL 사용자 테이블 및 SP권한 부여 쿼리  (0) 2014.05.08
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

$('input:checkbox[name="chk_all"]').click(function () {

            var upper_this;

            upper_this = $(this)

            $('input:checkbox[name="chk_indicator"]').each(function () {

                this.checked = upper_this.is(":checked");

            });

        });

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

콤마로 된 문자열을 테이블로 변환 함수

 

[ DelimitedSplit8K ]

 

1. 테이블 반환 함수

2. ItemNumber : 순번, Item : 각 콤마구분값

3. InputParameter : @pString - 문자열, @pDelimiter - 구분값(char(1))



  1. CREATE FUNCTION dbo.DelimitedSplit8K  
  2. /***************************************************************************************************  
  3.  Purpose:  
  4.  Split a given string at a given delimiter and return a list of the split elements (items).  
  5.   
  6.  Usage Example:  
  7.  SELECT *  
  8.    FROM dbo.DelimitedSplit8K(@StringToSplit, @Delimiter)  
  9.   
  10.  Returns:  
  11.  iTVF containing the following:  
  12.  ItemNumber = Element position of Item as a BIGINT (not converted to INT to eliminate a CAST)  
  13.  Item       = Element value as a VARCHAR(8000)  
  14.   
  15.  Notes:  
  16.  1. Optimized for VARCHAR(8000) or less.  
  17.  2. Optimized for single character delimiter.  
  18.  3. Optimized for use with CROSS APPLY.  
  19.  4. Does not "trim" elements just in case leading or trailing blanks are intended.  
  20.  5. cteTally concept originally by Iztek Ben Gan and "decimalized" by Lynn Pettis (and others) for a  
  21.     bit of extra speed and finally redacted by Jeff Moden for a different slant on readability and   
  22.     compactness.   
  23.  6. If you don't know how a Tally table can be used to replace loops, please see the following...  
  24.     http://www.sqlservercentral.com/articles/T-SQL/62867/  
  25.   
  26.  Revision History:  
  27.  Rev 00 - 20 Jan 2010 - Jeff Moden   
  28.         - Base 10 redaction for CTE.  
  29.  Rev 01 - 08 Mar 2010 - Jeff Moden  
  30.         - Changed UNION ALL to UNPIVOT for bit of extra speed.  
  31.  Rev 02 - 13 Mar 2010 - Jeff Moden  
  32.         - Removed one additional concatenation and one subtraction from the SUBSTRING in the   
  33.           SELECT List.  
  34. ***************************************************************************************************/  
  35. --===== Define I/O parameters  
  36.         (  
  37.         @pString    VARCHAR(8000),  
  38.         @pDelimiter CHAR(1)  
  39.         )  
  40. RETURNS TABLE  
  41. AS  
  42. RETURN  
  43. WITH --"Inline" CTE Driven "Tally Table" produces values up to 10K... enough to cover VARCHAR(8000).  
  44.       E1(N) AS (SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL   
  45.                 SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL   
  46.                 SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1),--10  
  47.       E2(N) AS (SELECT 1 FROM E1 a, E1 b),   --100  
  48.       E4(N) AS (SELECT 1 FROM E2 a, E2 b),   --10,000  
  49. cteTally(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY N) FROM E4)  
  50. --===== Do the split  
  51.  SELECT ROW_NUMBER() OVER (ORDER BY N) AS ItemNumber,  
  52.         SUBSTRING(@pString, N, CHARINDEX(@pDelimiter, @pString + @pDelimiter, N) - N) AS Item  
  53.    FROM cteTally  
  54.   WHERE N < LEN(@pString) + 2  
  55.     AND SUBSTRING(@pDelimiter + @pString, N, 1) = @pDelimiter  
  56. ;  

 

<사용예>

 

1. 문자열 관련


SELECT * FROM DelimitedSplit8K('을지문덕,홍길동,가가가,일반적,소리샘,케이티,왔구나,뭘까요,납니다요,ㅋㅋㅋㅋㅋㅋㅋㅋ,긴문장을보여드리겠습니다. 뭐가 길까요알아서 맞춰보시길',',')  

 

 

2. 테이블과 조인

 

  - CROSS APPLY를 위해 SQL2005 이상 가능 ( 호환성모드 90 이상 )


  1. SELECT t.아이디,t.콤마로된필드,b.itemNumber,b.item  
  2. FROM 대상테이블 t  
  3. CROSS APPLY dbo.DelimitedSplit8K(t.m_interest,',') B  
  4. WHERE isnull(t.콤마로된필드,'') <> ''  
  5. ORDER BY T.아이디  

 

 

 

[ fn_Split ]

 

1. 테이블 반환 함수

2. 각 콤마구분값

3. InputParameter : @Sql - 문자열, @Splits - 구분값


  1. CREATE FUNCTION [dbo]. [fn_Split] ( @Sql VARCHAR (8000), @Splits VARCHAR (10))    
  2.     RETURNS @temp TABLE (item VARCHAR (100))    
  3. AS    
  4. BEGIN   
  5.     Declare @i Int    
  6.     SET @Sql    =  RTrim   (LTrim (@Sql))    
  7.     SET @i      =  CharIndex   (@Splits, @Sql)    
  8.     WHILE @i  >  =1    
  9.     Begin    
  10.         INSERT @temp VALUES(Left (@Sql, @i-1))    
  11.         SET @Sql    =  SUBSTRING   (@Sql, @i + 1, LEN (@Sql ) - @i)    
  12.         SET @i      =  CHARINDEX   (@Splits, @Sql)    
  13.     END ;    
  14.   
  15.   
  16.     IF @Sql     < >  ''    
  17.         INSERT @temp VALUES(@Sql)    
  18.    
  19.     RETURN  
  20. END    

 

<사용예>


  1. SELECT * FROM fn_Split('을지문덕,홍길동,가가가,일반적,소리샘,케이티,왔구나,뭘까요,납니다요,ㅋㅋㅋㅋㅋㅋㅋㅋ,긴문장을보여드리겠습니다. 뭐가 길까요알아서 맞춰보시길',',')  

 

'IT > MSSQL' 카테고리의 다른 글

MSSQL 함수 모음  (0) 2014.12.30
FullText Search  (0) 2014.10.13
MSSQL 인덱스(Index) 생성  (0) 2014.08.20
Code Formatter. 코드 정렬 도구.  (0) 2014.06.10
MSSQL 사용자 테이블 및 SP권한 부여 쿼리  (0) 2014.05.08
Posted by 당양부부34

블로그 이미지
주요 토렌트를 블로깅하고 있습니다. 토렌트 순위 등은 다른 사이트를 찾아보세요. 주요 웹툰 순위도 게재했어요 경제를 좋아하는 일산의 행복한 프로그래머입니다.
당양부부34
Yesterday
Today
Total

달력

 « |  » 2024.5
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함