반응형

오라클, MYSQL 소수점 처리방법

오라클과 MYSQL의 소수점 처리방법에 대해 알아보겠습니다.


오라클 소수점 처리방법

소수점 내림
TRUNC (숫자컬럼, 자릿수)

EX) SELECT user_id, TRUNC( user_money , 2 ) FROM user_info  --  user_money를 소수점 둘째자리에서 내림하겠다.

소수점 반올림
ROUND(숫자컬럼, 자릿수)

EX) SELECT user_id, ROUND( user_money , 2 ) FROM user_info  --  user_money를 소수점 둘째자리에서 반올림하겠다.


MYSQL 소수점 처리방법

소수점 내림
TRUNCATE(숫자컬럼, 자릿수)

소수점 반올림
ROUND(숫자컬럼, 자릿수)

올림 (소수점자리상관없이 올림 / 정수)
CELING(숫자컬럼)

내림(소수점자리상관없이 림 / 정수)
FLOOR(숫자컬럼)

반응형
반응형

JSP - 아이디 중복 체크

java - jsp에서 아이디 중복체크에 대한 제가했던 예제 첨부해드립니다. 


JAVA - controller


@RequestMapping(value="/admin/idDuplChk.do")

public ModelAndView idDuplChk(@RequestParam Map<String, Object> commandMap,ModelAndView model,HttpServletRequest request, 

HttpServletResponse response) throws Exception{

try {

String duplChk = commandMap.get("duplChk").toString();

int result = 0;


result = TotalmngService.idDuplChk("manager.idDuplChk", commandMap);

if(result == 0){

model.addObject("result","available_id");


}else{

model.addObject("result","unavailable_id");

}

return model;

} catch (Exception e) {

model.addObject("Msg",DataException.getExceptionMsg(e));

e.printStackTrace();

return model;

}

}



JAVA - service


int idDuplChk(String sqlId,Map<String, Object> commandMap) throws Exception;



JAVA - serviceImpl


@Override

public int idDuplChk(String sqlId,Map<String, Object> commandMap ) throws Exception {

return TotalmngDAO.idDuplChk(sqlId,commandMap);

}



JAVA - DAO


public int idDuplChk(String sqlId,Map<String, Object> commandMap) {

return selectOne(sqlId, commandMap);

}



SQL

  <!-- ID 중복 체크 -->

<select id="idDuplChk" parameterType="hashmap" resultType="int">

SELECT

COUNT(*)AS CNT

FROM 

<if test="duplChk != null and duplChk != ''">

        table_admin

WHERE 1=1

AND a_id = #{a_id}

</if>

</select>



JSP - 자바스크립트


var idDupChk = "";

/* 아이디 중복확인 */

function fn_idDuplChk(data) {

if(data == 'admin'){

if($("#a_id").val() == '' || $("#a_id").val() == null){

    alert('중복체크할 아이디를 입력하세요');    

    return;    

    }

document.form.duplChk.value="admin";

}

var formData = new FormData(document.form);

$.ajax({

type: 'POST',

data: formData,

url: "<c:url value='/admin/idDuplChk.do'/>",

dataType :'json',

processData: false,

contentType: false,

success: function(data){

//alert(data.result);

if(data.result === 'available_id'){

alert("사용 가능한 아이디 입니다.");

idDupChk = "Y";

}

else if(data.result === 'unavailable_id'){

alert("이미 사용중인 아이디입니다.");

$("#a_id").val('');

idDupChk = "";

}

},

    error: function (xhr, ajaxOptions, thrownError) {}

});

}


JSP - HTML


<input type="hidden" id="duplChk" name="duplChk">

<button class="sr_id" type="button" onclick="fn_idDuplChk('admin')">중복확인</button>



반응형

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

JSP - JSTL 데이터 포맷  (0) 2017.11.15
JSTL - c:forEach 리스트 합계구하기  (0) 2017.11.02
JSTL - c:forEach문, c:if문, c:choose문(else문)  (0) 2017.10.27
JSP - 페이징처리  (0) 2017.10.20
반응형

invalid identifier 오라클 오류

ORA-00904: 부적합한 식별자

존재하지 않는 컬럼명을 사용하거나 잘못된 테이블명이 있는 경우 발생

-> 컬럼명이나 테이블명 확인


too many values 오라클 오류

ORA-00913

INSERT 할때 원래컬럼수보다 더 많을경우 발생

-> 컬럼 갯수 확인


constraint violation 오라클 오류

 constraint violation ( ) : primary key not found

ORA -02291 : 무결성 제약 조건 위반 - 상위 키를 찾을 수 없음 팁

외래 키 값에 일치하는 기본 키 값이 없을때 발생

-> 외래 키를 삭제하거나 외래키테이블에 외래키와 일치하는 기본 키를 추가


unique constraint violated 오라클 오류

ORA-00001: unique constraint violated

무결성제약조건 에러로 테이블에 한개만 존재해야하는 key를 중복해서 넣으려고 할때 발생

 -> insert시 기본키, 외래키 등 확인을해서 중복이 안되게 데이터 변경


date format picture ends before converting entire input string 오라클 오류

ORA-01830: date format picture ends before converting entire input string

DATE에 시간을 넣으면 나타나는 에러

 -> 타입을 date에서 datetime이나 timestamp로 변경하거나 '2017/10/20 15:00:00'에서 뒤에 시간을 제거해주면 됨

반응형
반응형

JSTL - c:forEach문


jsp의 for문이라고 생각하시면 될것같습니다.

물론 조금다릅니다.

주로 자바에서 모델로 Attribute에 담아서 JSP에 뿌려줄때 사용합니다.

forEach를 사용하는 것에대해 작성해보겠습니다.



JSP - HTML


<c:forEach var="i" begin="1" end="10" step="1">

${i}

</c:forEach>


일단 바로 for문처럼 숫자의 반복을 사용하려면 아래와 같이

begin = 시작숫자

end = 마지막숫자

step = 증가할 수

이렇게 작성하시면 1부터 10까지 나올겁니다.



다음은 JAVA에서 mode에 담긴 값을 가져오는 예제입니다.


JAVA


@RequestMapping(value="/selectGateEntrnSttstList")

    public String selectUserList (@ModelAttribute("paramVO") UserVO paramVO, ModelMap model) throws Exception {

List<EgovMap> userList = userService.selectUserList(paramVO);  

// paramVO에 담긴 파라메터로 selectUserList에서 검색한쿼리의 데이터를 List에 담아줍니다. 저는 egovMap를 사용했습니다.


model.addAttribute("resultList", userList );   // 리스트에 담긴 userList를 모델에 resultList라는 이름으로 담아줍니다.


return "common/user/userList";  // JSP경로

}



JSP - HTML ( userList.jsp )


<--    위에서 모델로 담아준 result를 가져오겠습니다. 가져올때 item="${resultList}" 로가져오면됩니다.    -->

 <--    var로 리스트명을 변경해준뒤 변경 안해줘도 됩니다.   -->

 <--    위에서 result로 변경해줘서 ${result.컬럼}으로 가져왔습니다. 변경안해줬다면 ${resultList.userId}가 되겠습니다.    -->


<c:forEach var="result" items="${resultList}" varStatus="status">     

${result.userId} 

</c:forEach>




JSTL - c:if문


if문과 상당히 비슷하지만 else문이 없어서 그것에 대체는 choose문을 사용하면됩니다.

아래와같이 작성해서 사용하면 됩니다.


<c:if test="조건식"></c:if>

주의하실점은 ${result.userId}와 ${result.adminId} 두개를 비교하고싶다 그러면

${result.userId} == ${result.adminId} 이게아니고

${result.userId == result.adminId} 이렇게 작성해주시면됩니다.





JSTL - c:choose


jstl에는 if문에 else문이 없어서 당황하셨을텐데 choose문을 사용하면됩니다.

choose문은 아래와 같이 사용하면됩니다.


<c:choose>

<when test="조건식">


</when>

<otherwise>


</otherwise>

</c:choose>


when이 if문이고 otherwise가 else라고 생각하시면 됩니다.

if문이 많이 필요하시면 when을 여러개 쓰시면 됩니다.

test="조건식"과 test!="조건식"을 활용한다면 어떤것도 다사용할수 있을것 같습니다.

반응형

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

JSP - JSTL 데이터 포맷  (0) 2017.11.15
JSTL - c:forEach 리스트 합계구하기  (0) 2017.11.02
JSP - 아이디 중복 체크  (0) 2017.11.01
JSP - 페이징처리  (0) 2017.10.20
반응형

자바스크립트 - 스크립트 내에서 HTML 테이블 생성

아래와 같이 htmlStr에 태그를 넣어서 제이쿼리로 $("#id").html( htmlStr ); 이렇게 해주면
HTML에 id가 list인 DIV안에 테이블이 생성됩니다.
json값이면 each로 돌리거나 for문으로도 넣어줄수있습니다.
주의하실점은 <input>태그에서 함수나 "를 많이사용하는경우에서는
"앞에 \를 넣어서 써주시면 "를 문자로 처리합니다.
ex) htmlStr = " <input type=\"button\" onclick=\" 함수( \'"+데이터1+"\', \'"+데이터2+"\' ) \"> "
위와같이 써주면 되겠습니다. 생각보다 되게 헷갈리니까 주의해주세요.

자바스크립트


function 함수1(){

var htmlStr = "";

htmlStr += "<table>";

// jquery를 이용한 JSON 결과 데이터 파싱

$(jsonStr.results.juso).each(function(){

htmlStr += "<tr>";

htmlStr += "<td>"+this.zipNo+"</td>";

htmlStr += "<td>"+this.roadAddrPart1+this.roadAddrPart2+"</td>";

htmlStr += "<td><input type=\"button\" onclick=\"함수()\"></td>";

htmlStr += "</tr>";

});

htmlStr += "</table>";

// 결과 HTML을 FORM의 결과 출력 DIV에 삽입

$("#list").html(htmlStr);

}


JSP - HTML


<div id="list"> <!-- 검색 결과 리스트 출력 영역 --> </div>

반응형
반응형

오라클 - 문자형 데이터 인덱스 자동증가

시퀀스나 자동증가같이 숫자형 컬럼에서만 사용할 수 있는데

그래서 문자형에서도 사용할수있는 자동증가 쿼리입니다.

데이터를 숫자 1~n으로 넣어놓고 데이터의 최대 max값( n값 )을 찾아 그것보다 높은 것으로

insert해줍니다.


INSERT INTO 테이블명(컬럼명) VALUES ( SELECT NVL( MAX(컬럼명 + 1),1 ) FROM 테이블명 )

반응형
반응형

오라클 테이블 컬럼추가 및 코멘트,설정 수정


컬럼 추가

ALTER TABLE 테이블명 ADD (컬럼명 타입());

ex) ALTER TABLE user_info ADD ( user_phone char(10) );


컬럼 DEFAULT, NOT NULL 수정

ALTER TABLE 테이블명 MODIFY(컬럼명 NOT NULL);

ALTER TABLE 테이블명 MODIFY(컬럼명DEFAULT '디폴트값');


컬럼명 수정

ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 변경할컬럼명;


컬럼 코멘트 수정

COMMENT ON COLUMN 테이블명.컬럼명 IS '코멘트';


테이블 코멘트 수정

COMMENT ON TABLE 테이블명 IS '코멘트';



반응형

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

오라클 쿼리 오류  (0) 2017.11.01
오라클 - 문자형 데이터 인덱스 자동증가  (0) 2017.10.26
오라클, mysql, mssql 문자열 합치기  (0) 2017.10.25
RDBMS, RDB 정의 및 기능  (0) 2017.10.12
SQL 문법 - SELECT문 및 함수  (0) 2017.10.11
반응형

도로명주소 API - 검색API 적용


도로명주소 API에서 검색형 API로 적용을 해보겠습니다.

검색형과 팝업형이있는데 레이어팝업을 사용해야되거나 팝업이 싫으시나 하시는 분들은

이방법으로 사용하시면 됩니다.

방식은 xml, json이 있는데 json으로 사용해볼겠습니다.


앞에 팝업형에서도 작성한것과 같이 

주소 api를 사용하려면 아래 링크에서 샘플 및 정보를 받을수 있습니다.

https://www.juso.go.kr/addrlink/main.do

접속해서 api키를 발급받아야 사용이 가능하니 api키를 발급 받으시길 바랍니다.

기본적인 정보만 입력하면 쉽게 발급받으실수 있습니다.

sample과 api활용 가이드도 있으니 참고하시면 좋을것 같습니다.

이번에는 검색형 주소검색을 사용했고 제가 적용한것을 작성하겠습니다.



자바스크립트


아래서 에러코드를 사용했는데 에러코드는 다음과 같습니다.

0         정상

-999         시스템에러 도로명주소 도움센터로 문의하시기 바랍니다.

E0001 승인되지 않은 KEY 입니다. 정확한 승인키를 입력하세요.(팝업API 승인키 사용불가)

E0005 검색어가 입력되지 않았습니다. 검색어를 입력해주세요.

E0006 주소를 상세히 입력해 주시기 바랍니다. 시도명으로는 검색이 불가합니다.



// 주소 검색후 데이터 받아오기

function getAddr(){

// AJAX 주소 검색 요청

$.ajax({

url:"http://www.juso.go.kr/addrlink/addrLinkApiJsonp.do" // 주소검색 OPEN API URL

,type:"post"

,data:$("#form").serialize() // 요청 변수 설정

,dataType:"jsonp" // 크로스도메인으로 인한 jsonp 이용, 검색결과형식 JSON 

,crossDomain:true

,success:function(jsonStr){ // jsonStr : 주소 검색 결과 JSON 데이터

$("#list").html(""); // 결과 출력 영역 초기화

var errCode = jsonStr.results.common.errorCode;

var errDesc = jsonStr.results.common.errorMessage;

if(errCode != "0"){ 

$("#pageApi").html("");

if(errCode ==  "E0001"){ alert("승인되지 않은 KEY입니다."); }

else if(errCode ==  "E0005"){ alert("검색어를 입력해주세요."); }

else if(errCode ==  "E0006"){ alert("시도명으로는 검색이 불가합니다."); }

else { alert("에러가 발생하였습니다. 잠시후 다시 시도해주세요."); }

}else{

if(jsonStr!= null){

makeListJson(jsonStr); // 결과 JSON 데이터 파싱 및 출력

pageMake(jsonStr);

}

}

}

,error: function(xhr,status, error){

alert("에러발생"); // AJAX 호출 에러

}

});

}


// 주소검색한 리스트를 html에 생성

function makeListJson(jsonStr){

var htmlStr = "";

htmlStr += "<table>";

// jquery를 이용한 JSON 결과 데이터 파싱

$(jsonStr.results.juso).each(function(){

htmlStr += "<tr>";

htmlStr += "<td>"+this.roadAddrPart1+"</td>";

htmlStr += "<td>"+this.roadAddrPart2+"</td>";

htmlStr += "<td>"+this.engAddr+"</td>";

htmlStr += "<td>"+this.zipNo+"</td>";

     htmlStr += "<td>

<input type=\"button\" onclick=\"addressing(\'"+this.zipNo+"\',\'"+this.roadAddrPart1+"\',\'"+this.roadAddrPart2+"\')\" value=\"선택\"></td>";

htmlStr += "</tr>";

});

htmlStr += "</table>";

// 결과 HTML을 FORM의 결과 출력 DIV에 삽입

$("#list").html(htmlStr);

}


// 주소값 넣어주기

function addressing(zipNo,roadAddrPart1,roadAddrPart2){

document.form.zipNo.value = zipNo; // 우편번호

document.form.addr.value = roadAddrPart1;//+" "+roadAddrPart2; // 도로명주소

}


//페이지 이동

function goPage(pageNum){

document.form.currentPage.value=pageNum;

getAddr();

}


// json타입 페이지 처리 (주소정보 리스트 makeListJson(jsonStr); 다음에서 호출)

function pageMake(jsonStr){

var total = jsonStr.results.common.totalCount; // 총건수

console.log("총건수:"+total);

var pageNum = document.form.currentPage.value;// 현재페이지

var paggingStr = "";

if(total < 1){

var htmlStr = "";

htmlStr += "<table>";

htmlStr += "<tr>";

htmlStr += "<td>검색결과가 없습니다.</td>";

htmlStr += "</tr>";

htmlStr += "</table>";

$("#list").html(htmlStr);

$("#pageApi").html("");

}else{

if(total > 1000){

total=1000;

}

var PAGEBLOCK=10; // 10

var pageSize=10; // 10

var totalPages = Math.floor((total-1)/pageSize) + 1; // 총페이지

var firstPage = Math.floor((pageNum-1)/PAGEBLOCK) * PAGEBLOCK + 1; // 리스트의 처음 ( (2-1)/10 ) * 10 + 1 // 1 11 21 31

if( firstPage <= 0 ) firstPage = 1; // 처음페이지가 1보다 작으면 무조건 1

var lastPage = firstPage-1 + PAGEBLOCK; // 리스트의 마지막 10 20 30 40 50

if( lastPage > totalPages ) lastPage = totalPages; // 마지막페이지가 전체페이지보다 크면 전체페이지

var nextPage = lastPage+1 ; // 11 21 

var prePage = firstPage-PAGEBLOCK ;

if( firstPage > PAGEBLOCK ){

paggingStr +=  "<a href='javascript:goPage("+prePage+");'>◁</a>  " ; // 처음 페이지가 아니면 <를 넣어줌

}

for(var i=firstPage; i<=lastPage; i++ ){

if( pageNum == i )

paggingStr += "<a style='font-weight:bold;color:blue;font-size:15px;' href='javascript:goPage("+i+");'>" + i + "</a>  ";

else

paggingStr += "<a href='javascript:goPage("+i+");'>" + i + "</a>  ";

}

if( lastPage < totalPages ){

paggingStr +=  "<a href='javascript:goPage("+nextPage+");'>▷</a>"; // 마지막페이지가 아니면 >를 넣어줌

}

$("#pageApi").html(paggingStr);

}

}


JSP - HTML


<form name="form" id="form" method="post">

  <input type="hidden" name="currentPage" value="1"/> <!-- 요청 변수 설정 (현재 페이지. currentPage : n > 0) -->

  <input type="hidden" name="countPerPage" value="10"/> <!-- 요청 변수 설정 (페이지당 출력 개수. countPerPage 범위 : 0 < n <= 100) -->

  <input type="hidden" name="resultType" value="json"/> <!-- 요청 변수 설정 (검색결과형식 설정, json) --> 

  <input type="hidden" name="confmKey" value="승인키"/> <!-- 요청 변수 설정 (승인키) -->

  <input type="text" name="keyword" value=""/> <!-- 요청 변수 설정 (키워드) -->

  <input type="button" onClick="getAddr();" value="주소검색하기"/>

  <div id="list"> <!-- 검색 결과 리스트 출력 영역 --> </div>

  <div class="paginate" id="pageApi"></div>

</form>



반응형
반응형

mysql 문자열 합치기


SELECT 

add1, 

add2, 

CONCAT(add1,'-',add2) as add

FROM juso



오라클 문자열 합치기


SELECT 

add1, 

add2,

add1||', '||add2 as add

FROM juso



mssql 문자열 합치기

SELECT 

add1, 

add2,

add1+', '+add2 as add

FROM juso

반응형
반응형

간단한 클래스 선언 및 함수호출


클래스를 만들고 달러로 변환해주는 함수를 만들어 보겠습니다.


클래스생성

public class TestClass{

public int testMethod(int dollar){       //  int -> 함수의 return받을 타입설정 / 함수명(데이터 받을 타입과 변수명)

int testVal = dollar*1139;

return testVal; // int의 함수라 return은 int만가능 

}

}


호출

TestClass testClass = new TestClass();  // 클래스 호출

testClass.testMethod(1);  // 클래스 접근후 함수사용

반응형

+ Recent posts