2014년 2월 18일 화요일

asp에서 엑셀 데이터 뽑을때 한글이 짤릴경우

현상 : mysql에서 데이터를 불러와 엑셀로 뽑아오는데 한글이 2자에서 짤림

해결책 :

SELECT CAST(my_table.DataColumn AS CHAR(10)) as TextColumn FROM my_table

이런식으로 char의 크기를 늘려주면 제대로 나옴

2014년 2월 13일 목요일

javascript type체크 함수

자바스크립트에서  toString을 사용하면 객체타입까지 자세히 나옴

null 의 경우 typeof null 이면 object

function typeChk(v){
  return (function(v){
     return Object.prototype.toString.call(v);
  }(v)).replace(/\[|\]/g,"").split(" ")[1].toLowerCase();
}

alert(typeChk('1'));

2014년 2월 10일 월요일

mysql table int pk값 0들어가는 현상

mysql db 에서 int 형 primary key 가 0이 들어갈경우
일단
1.null 값이 허용되면 null일경우 0으로 갱신

mysql sql_mode 설정 값 변경

>> select @@global.sql_mode;
>> select @@session.sql_mode;

현재 sql_mode 값 확인

>> set sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

으로 설정해줄수 잇음

오늘 현상은 그것은 아니었고

insert into table(intpk, val1) values('0','t');
auto increment 가  intpk에 걸려있으면 당연히 0을 넣어도 1 그리고 그 이후값이 들어가짐 


그런데 유니크인덱스 또는 프라이머리키  intpk, email 두개 걸려잇음

insert into table(intpk, val1, email) values('0','t','ss@ss.s.s') duplicate key update
intpk = '0',
email = 'ss@ss.s.s';

이러면 intpk가 0으로 업데이트가됨


=================================================================

unique 키가 두개 물려 잇음(a,b)가 물렷다 가정하자
insert into table(a,b,c) values('1',2,3);

duplicate key update c = 1

이것은 곧


insert into table(a,b,c) values('1',2,3);

update table set c= 1  where a= 1 or b= 2 limit 1

이거랑 같은말임


duplicate key update c = 1, a=LAST_INSERT_ID(a) 이런것도 한 방법이 될수 있음


http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html