728x90

오라클 SQL 문

     SELECT MENU_CD_V     menucdv
     ,UP_MENU_CD_V  upmenucdv
     ,MENU_NM_V     menunmv
     ,DEPTH_N       depthn
     ,SHOW_ORDER_N  showordern
     ,USE_YN_C      useync
    FROM T_OM_USER_MENU
         START WITH UP_MENU_CD_V = '07000000'
           AND SITE_CD_V = 'S0000100'
       CONNECT BY PRIOR MENU_CD_V = UP_MENU_CD_V AND SITE_CD_V = 'S0000100'
         ORDER SIBLINGS BY SHOW_ORDER_N;

=========================================================================>

위의 오라클 sql 문을 ms-sql 문으로 변환

MS-SQL  문

WITH CTE_USER_MENU_TABLE
AS
(
   SELECT MENU_CD_V, UP_MENU_CD_V, MENU_NM_V, DEPTH_N, USE_YN_C , CONVERT(VARCHAR(255), RIGHT('000' + RTRIM(SHOW_ORDER_N),3) ) AS SHOW_ORDER_N
   FROM T_OM_USER_MENU
   WHERE UP_MENU_CD_V = '07000000' AND SITE_CD_V = 'S0000100'
   UNION ALL
   SELECT A.MENU_CD_V, A.UP_MENU_CD_V, A.MENU_NM_V, A.DEPTH_N, A.USE_YN_C , CONVERT(VARCHAR(255), CONVERT(VARCHAR,B.SHOW_ORDER_N) + '|' + RIGHT('000' + RTRIM(A.SHOW_ORDER_N),3) ) AS SHOW_ORDER_N
   FROM T_OM_USER_MENU A INNER JOIN CTE_USER_MENU_TABLE B ON A.UP_MENU_CD_V = B.MENU_CD_V
   WHERE A.SITE_CD_V = 'S0000100'
)
SELECT
    MENU_CD_V     menucdv
    ,UP_MENU_CD_V  upmenucdv
    ,MENU_NM_V     menunmv
    ,DEPTH_N       depthn
    ,SHOW_ORDER_N  showordern
    ,USE_YN_C      useync
   FROM CTE_USER_MENU_TABLE ORDER BY SHOW_ORDER_N;

 

728x90

'프로그래밍 > MS_SQL' 카테고리의 다른 글

MSSQL COMMENTS 생성  (0) 2015.04.13
mssql 테이블 용량 및 row 갯수  (0) 2015.03.24
Session 관리 ( Inproc,StateServer,SQL Server )  (0) 2013.06.14
mssql 2008 로그 축소  (0) 2013.04.29
mssql 2008 이후 로그 축소  (0) 2012.11.27
728x90

SQLPLUS 출력 컬럼 수 조정하기

 

--조회컬럼의 크기 변경하기
--column 컬럼명 format
--문자열인경우:  a글자수
--숫자인경우 9나 0으로 자릿수표현 : 9999 데이터가 없으면 표현하지 않는다. / 00000 데이터가 없어도 표현
--일시적으로 사용된다. 컬럼명이 같다면 테이블이 달라도 설정한 자릿수로 출력된다.
--column은 줄여서 col만 써도 된다.
--column은 sqlplus에서만 사용할수 있는 sqlplus문장이다.

column name format a6;
col num format 00;
col address format a13;
--포멧으로 설정한 글자가 컬럼의 있는 글자보다 작다면 해당 레코드는 두줄로 표현된다.

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 백업  (0) 2015.04.24
오라클 테이블 정보 보기  (0) 2015.04.23
프로시저 혹은 함수 목록 출력시  (0) 2014.06.25
오라클 날짜 함수  (0) 2014.01.13
SQL LOADER 사용 기초  (0) 2013.10.01
728x90

1. 전통적인 방법


SELECT *

  FROM (SELECT ROWNUM rnum

              ,a.*

          FROM (SELECT *

                  FROM members) a)

 WHERE rnum BETWEEN startrow# AND endrow#;




2. Oracle 10g 이후부터 사용가능한 방법


SELECT * FROM 

(

SELECT a.*,

    CEIL((ROW_NUMBER() OVER ( ORDER BY #order by#  desc|ASC )) / #page_row# ) as PAGENUM,

        CEIL(COUNT(*) OVER() / #page_row)  as TOTALPAGE

        FROM table명

        WHERE 1=1

and ...

 

)

where PAGENUM = 1

 

728x90
728x90

프로시저나 펑션을 만들다 보면 여러 소스코드 파일을 검색하듯이 여러 프로시저나 펑션의 내용을 검색하고자 할 경우가 있습니다.

 

결론부터 말하자면 USER_SOURCE 를 이용하면 됩니다.

 

SELECT NAME 
FROM   USER_SOURCE
WHERE  TYPE = 'PROCEDURE'

GORUP BY NAME  

ORDER BY NAME ASC;

 

 

(TYPE = 'FUNCTION" 으로 하면 펑션에서 검색하게 됩니다.)

 

아래는 USER_SOURCE뷰의 스크립트입니다. (Oracle8i 기준입니다.)

 

CREATE OR REPLACE VIEW USER_SOURCE

(NAME, TYPE, LINE, TEXT)
AS
select o.name,
decode(o.type#, 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
               11, 'PACKAGE BODY', 13, 'TYPE', 14, 'TYPE BODY',
               'UNDEFINED'),
s.line, s.source
from sys.obj$ o, sys.source$ s
where o.obj# = s.obj#
  and o.type# in (7, 8, 9, 11, 13, 14)
  and o.owner# = userenv('SCHEMAID')
union
select o.name, 'JAVA SOURCE', s.joxftlno, s.joxftsrc
from sys.obj$ o, x$joxfs s
where o.obj# = s.joxftobn
  and o.type# = 28
  and o.owner# = userenv('SCHEMAID')
/

 

 

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 테이블 정보 보기  (0) 2015.04.23
SQLPLUS 출력 컬럼 수 조정하기  (0) 2014.07.31
오라클 날짜 함수  (0) 2014.01.13
SQL LOADER 사용 기초  (0) 2013.10.01
ORA-01476 : 제수가 0 입니다.  (0) 2012.05.14
728x90

 Path Manipulation  

취약점) 예상가능한 경로 노출로 인해 시스템 의 중요파일에 접근해 공격가능  

대응방안) 인가된 경로 외에 파일에 접근하지 못하도록 소스 변경해야함

 SQL Injection

취약점) DB를 공격해서 정보 조작및 유출 가능  

대응방안) 사용자 입력값이 쿼리문에 직접 조합되지 않도록 preparedStatement사용할것

 XSS

취약점) 페이지 우회, 바이러스 설치 등 스크립트 공격가능

대응방안) 사용자 입력값에 대해 유효문자가 아닌 문자등을 필터링 해주어야 함 

 HTTP Response Splitting

취약점) 페이지 우회, 바이러스 설치 등 스크립트 공격가능. 헤더 세팅시 본문 침해할 가능성 있음

대응방안) 사용자 입력값에 대해 유효문자가 아닌 문자등을 필터링 해주어야 함 

 Trust Boundary Violation

취약점) 프로그램 내부 데이터 조작 공격 가능

대응방안) 내부데이터의 외부 사용자 입력값이 사용되지 않도록 소스 수정해야함

 Unchecked Return Value: Missing Check against Null  

취약점) 시스템 간접정보 획득 및 프로그램 오작동 가능  

대응방안) 사용자 입력값 필터링해주어야 함 

 J2EE Misconfiguration: Missing Error Handling

취약점) 시스템 간접정보 획득 가능  

대응방안) Error발생시 시스템 정보가 노출되지 않도록 설정 파일 변경해야 함



728x90
728x90

SQL 오라클 내장함수(변환형 함수, 날짜 함수, 숫자형 함수)

숫자형 함수

ROUND : 숫자를 반올림

ROUND(숫자값,a) a가 양수이면 소수이하자리를, 음수이면 정수 부분 자리이다.

ROUND(35.735,2) -> 35.74

TRUNC : 숫자를 절사

TRUNC(숫자값,a)

MOD : 나누기 연산에서 나머지 구함

MOD(7,2) -> 1

POWER : 거듭제곱

POWER(3,2) -> 9

SQRT : 제곱근

SQRT(25) -> 5

SIGN : 양수인지 음수인지 0인지를 구별함

SIGN(-15) -> -1

CHR : ASCII값에 해당하는 문자를 구함

CHR(65) -> A

 

날짜형 함수

SYSDATE : 현재 시스템의 날짜 및 시간을 구함

SYSDATE -> 현재 시간 10-MAY-99

LAST_DAY : 지정한 날짜의 해당월의 마지막 날짜를 구함

LAST_DAY('17-FEB-98') -> 28-FEB-98

MONTHS_BETWEEN : 두 날짜사이의 개월수를 구함

MONTHS_BETWEEN('26-APR-97','22-JUL-95') -> 21.1290323

ADD_MONTHS : 지정한 날짜로부터 몇 개월수의 날짜를 구함

ADD_MONTHS('22-JUL-95',21) -> 22-APR-97

ROUND : 날짜에 대한 반올림

ROUND('10-MAY-99','MONTH') -> 01-MAY-99

TRUNC : 날짜에 대한 버림

 TRUNC('10-MAY-99','MONTH') -> 01-MAY-99

변환형 함수

TO_CHAR : 숫자나 날짜를 문자열로 변환

TO_CHAR(350000,'$999,999') -> $350,000

TO_NUMBER : 문자를 숫자로 변환

TO_NUMBER('1234') -> 1234

TO_DATE : 문자를 날짜로 변환

TO_DATE('10 SEPTEMBER 1992','DD MONTH YYYY') -> 10-SEP-92


728x90
728x90
select text값 가져오기

$("#select_box option:selected").text();


jQuery로 선택된 값 읽기
$("#myselect option:selected").val();
$("select[name=name]").val();


jQuery로 선택된 내용 읽기
$("#myselect option:selected").text();


선택된 위치
var index = $("#test option").index($("#test option:selected"));


// Add options to the end of a select
$("#myselect").append("<option value='1'>Apples</option>");
$("#myselect").append("<option value='2'>After Apples</option>");

 
// Add options to the start of a select
$("#myselect").prepend("<option value='0'>Before Apples</option>");
 

// Replace all the options with new options
$("#myselect").html("<option value='1'>Some oranges</option><option value='2'>More Oranges</option><option value='3'>Even more oranges</option>");
 

// Replace items at a certain index
$("#myselect option:eq(1)").replaceWith("<option value='2'>Some apples</option>");
$("#myselect option:eq(2)").replaceWith("<option value='3'>Some bananas</option>");
 

// 지정된 index 값으로 select 하기
$("#myselect option:eq(2)").attr("selected", "selected");
 

// text 값으로 select 하기
$("#myselect").val("Some oranges").attr("selected", "selected");
 

// value 값으로 select 하기
$("#myselect").val("2");
 

// 지정된 인덱스 값의 item 삭제
$("#myselect option:eq(0)").remove();
 

// 첫번째 item 삭제
$("#myselect option:first").remove();
 

// 마지막 item 삭제
$("#myselect option:last").remove();
 
 
// 선택된 옵션의 text 구하기
alert($("#myselect option:selected").text());
 

// 선택된 옵션의 value 구하기
alert($("#myselect option:selected").val());
 

// 선택된 옵션 index 구하기
alert($("#myselect option").index($("#myselect option:selected")));
 

// SelecBox 아이템 갯수 구하기
alert($("#myselect option").size());
 

// 선택된 옵션 앞의 아이템 갯수
alert($("#myselect option:selected").prevAll().size());
 

// 선택된 옵션 후의 아이템 갯수
alert($("#myselect option:selected").nextAll().size());
 

// Insert an item in after a particular position
$("#myselect option:eq(0)").after("<option value='4'>Some pears</option>");
 

// Insert an item in before a particular position
$("#myselect option:eq(3)").before("<option value='5'>Some apricots</option>");
 

// Getting values when item is selected
$("#myselect").change(function() {
alert($(this).val());
alert($(this).children("option:selected").text());
});



radio button 관련

radio button 값 가져오기

.........

<input type="radio" name="radio" id="radio" value="ta">
<input type="radio" name="radio" id="radio" value="do">
<input type="radio" name="radio" id="radio" value="ch">
.........

jQuery("input:radio[name=radio]:checked").val();
 
.........

checkbox 관련

checkbox:<input type="checkbox" name="chk" id="chk" value="000000000" />

checkall:<input type="checkbox" name="checkall" id="checkall">

check box 모두 체크/해제 하기
jQuery(function(){
  $("input[name=checkall]:checkbox").click(function(){
    if($("input[name=checkall]:checkbox").is(":checked")){
    $("input[name=chk]:checkbox").attr("checked","checked");
    }else{
    $("input[name=chk]:checkbox").removeAttr("checked");
    }
  })
});

check box 체크된 값 가져오기
var  v = '';
var  c = 0;
for (var i = 0; i < $("input[name=chk]:checkbox").length; i++) {
  if ($("input[name=chk]:checkbox")[i].checked == true) {
    if(c>0) v = v + "|";
    v = v + $("input[name=chk]:checkbox")[i].value;
    c++;
  }


728x90

'프로그래밍 > 자바스크립트' 카테고리의 다른 글

jQuery selectBox 제어  (0) 2016.04.14
jQuery 자식 팝업 창에서 부모 창 컨트롤  (0) 2016.03.17
정규 표현식 요약  (0) 2013.10.02
quick menu 바  (0) 2013.07.19
javascript 브라우저 종류  (0) 2012.11.23
728x90

Regular Expressions in Java


java.util.regex package 에 있는 Matcher 클래스와 Pattern 클래스를 사용하여 문자열을 정규표현식으로 검증할수 있다.

     

http://www.javamex.com/tutorials/regular_expressions/pattern_matcher.shtml#.UfdJmo1M-X8


e.g. )  boolean b = Pattern.matches(“^[a-zA-Z0-9]*$”, this.input);

 

A.     정규표현식 설명


^ : 문자열의 시작을 나타냄. 

$ : 문자열의 종료를 나타냄. 

. : 임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다)

| : or를 나타냄. 

? : 앞 문자가 없거나 하나있음을 나타냄. 

+ : 앞 문자가 하나 이상임을 나타냄. 

* : 앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄. 

[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내며 두 문자 사이는 '-' 기호로 범위를 나타낸다. []내에서 ^ 가 선행하여 나타나면 not 를 나타낸다. 

{} : 선행문자가 나타나는 횟수 또는 범위를 나타낸다. 

a{3} 인 경우 a가 3번 반복된 경우를 말하며, a{3,}이면 a가 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우 

a가 3번 이상 5번 이하 반복된 경우를 나타낸다. 

( ): 소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 봅니다. 예를 들어 ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면 ‘guggggle' 문자열이 문자열에 포함되어 있어야 됩니다.

|: 패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' 는 hi 나 hello 가 포함되어있는 문자열을 의미합니다.

\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

\D : 숫자를 제외한 모든 문자

\: 위의 각 기능에서 벗어납니다(escape).

(?i): 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이))


B.     기본적인 문자열 검증 정규식


^[0-9]*$  :  숫자만

^[a-zA-Z]*$  :  영문자만

^[가-힣]*$  :  한글만

^[a-zA-Z0-9]*$  :  영어/숫자만

.+ : 한문자 이상의 전체문자를 표시한다.

C. 정규식 표현 예제


이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$  or  ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$ 

휴대폰 :  ^01(?:01[6-9]) - (?:\d{3}\d{4}) - \d{4}$ 

일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$

주민등록번호 : \d{6} \- [1-4]\d{6}

IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

파일확장자: ([^\s]+(\.(?i)(jpg|png|gif|bmp))$)



1. 자바스크립트 정규표현식은 RegExp 객체로 표현됨.

2. RegExp 객체 생성방법

    1) RegExp() 생성자 사용

    2) 한쌍의 슬래시(/) 안에 리터럴을 기술

           --> var pattern = /s$/;        

           --> var pattern = new RegExp("s$");

                              : 's' 로 끝나는 문자열에 매칭됨


3. 정규표현식 리터럴 문자

    1) \0 : 널문자

    2) \t  : 탭

    3) \n : 줄바꿈

    4) \v : 수직탭

    5) \f  : 폼피드

    6) \r  : 캐리지리턴


4. 문자클래스 ( 대괄호로 둘러싼 개별 리터럴 문자 --> 대괄호내에 정의된 모든 문자에 매치됨)

    1) /[abc]/   : a,b,c 모두 매칭

    2) /[^abc]/  : a,,b,c 가 아닌 모든 문자에 매치

    3) /[a-z]/    : 임의의 알파벳 소문자에 매치

    4) /[a-zA-Z0-9]/   : 임의의 알파벳 대소문자 및 숫자에 매치

    5) 특수문자

          a) \s : Unicode 공백문자

          b) \S : Unicode 공백문자가 아닌 문자

          c) \w : ASCII 문자([a-zA-Z0-9]) 와 동일

          d) \W : ASCII 문자가 아닌 문자 ([^a-zA-Z0-9]) 와 동일

          e) \d  : ASCII 숫자([0-9]) 와 동일

          f) \D : ASCII 숫자가 아닌 문자([^0-9]) 와 동일

          g) \b : 백스페이스


               ==> /[\b]/    백스페이스에 매치됨.


               ==> /[\s\d]/  공백문자나 숫자 하나에 매치


5. 정규표현식 반복 문자 

      1) {n,m} n번이상 m번 보다 이하

      2) {n,}   n번이상

      3) {n}    딱 n번

      4) ?        0또는 한번 나타남  ({0,1}과 동일)          

      5) +        한번이상      ({1,}과 동일)

      6) *        0번이상       ({0,} 과 동일)


           ==> /\d{2,4}/    : 2에서 4자리 사이의 숫자와 매치


           ==> /\w{3}\d?/    : 정확히 3 문자와 매치 돠고 생략 가능한 숫자가 하나 있다.


           ==> /\s+java\s+/  : 앞뒤에 하나 이상의 공백이 있는 java 와 매치


           ==> /[^"]*/            : 0개 이상의 따옴표가 아닌 문자와 매치


6. 대체표현식 (|문자)  ==>  왼쪽에서 오른쪽으로 검색됨 (먼저 매치되면 뒤의 것은 매칭 안됨)

                    /ab|cd|ef/          : ab 문자열 또는 cd문자열 또는 ef문자열 매치

                    /d{3}|[a-z]{4}/  : 세자리 숫자나 네개의 소문자에 매치 

                    /a|ab/                : "ab" 에 적용되면 첫번째 표현식에만 매칭됨.


7. 그룹화 (소괄호)  : 

# 정규표현식 플래그

   i    : 대소문자 구별하지 않음

   g   : 전역매칭 수행 , 첫번째 매치에서 끝내지 않고 매치되는 모든 것을 찾는다.

   m  : 여러줄 상태


# 정규표현식 패턴 매칭을 위한 String 메서드

(1) search()  : - 정규표현식을 파라미터로 받아 가장 처음 매칭되는 부분 문자열의 위치를 리턴, 

                    - 파라미터가 정규표현식이 아니라면 RegExp()생성자로 정규표현식으로 변환된다. 

                     - 매칭되는 부분 문자열이 없다면 -1 리턴 

                     - 전역기능 지원안함. g플래그가 있다면 무시 


               "javaScript".search(/script/i);               ==>  4리턴


(2) replace() : - 찾아서 바꾸기 작업 수행

                      - 첫번째 파라미터 : 정규표현식 , 두번째 파라미터 :바꿀 문자열(두번째파라미터 함수가능,동적문자열가능)

                      - g플래그가 있으면 모두다 바꾸고, 없으면 첫번째 매치만 바꿈

                      - 첫번째 파라미터가 정규표현식이 아니면 주어진 문자열을 그대로 검색한다.

                      - 

                 text.replace(/javascript/gi,"JavaScript");           ==> 문자열의 대문자가 어떤상태던지 JavaScript로 변환한다.


(3) match()

728x90

'프로그래밍 > 자바스크립트' 카테고리의 다른 글

jQuery 자식 팝업 창에서 부모 창 컨트롤  (0) 2016.03.17
jquery radio, select, checkbox  (0) 2013.10.28
quick menu 바  (0) 2013.07.19
javascript 브라우저 종류  (0) 2012.11.23
자주 쓰이는 JQuery Ajax 예제  (0) 2011.08.02

+ Recent posts