정수와 소수를 분리해서 디비 쿼리하는 방법
본문
디비테이블 abc
uid gid bbsid depth
1 100000000.00 test 0
2 99999999.00 test 0
3 99999998.00 test 0
4 99999997.00 test 0
5 99999996.00 test 0
6 99999997.01 test 1 <<== uid 4 댓글
7 99999995.00 test 0
8 99999993.00 test 0
9 99999997.02 test 1 <<== uid 4 댓글
이런 자료가 있습니다. 이것을 추출해서 다른 디비 테이블에 저장하려 합니다.
여기서 문제는 gid 값에서 소수점이 댓글의 순서를 표현하고 있습니다.
점 이하 소수가 00 은 원글로 저장하고
점 이하 소수가 00 아닌것은 점 앞의 정수의 댓글로 저장하며,
wr_num 과 wr_parent 는 원글의 것을 상속 받습니다.
대상테이블 test
idx wr_num wr_reply wr_parent
1 -1 1
2 -2 2
3 -3 3
4 -4 4
5 -5 5
6 -4 A 4 <<== idx 4 댓글
7 -6 6
8 -7 7
9 -4 A 4 <<== idx 4 댓글
아래에 사용된 쿼리를 이용하면 댓글이 원글의 정보가 없어서
댓글의 역할을 하지 못하고 있습니다.
이것을 수정하는 방법에 대한 조언부탁드립니다.
$query = "select * from abc where bbsid='test' order by gid ";
$result = sql_query($query);
for($i = 0; $row = sql_fetch_array($result); $i++)
{
$row2 = sql_fetch("select min(wr_num) as mx_num from test");
$wr_num = $row2['mx_num']-1;
$depth = $row['depth'];
if($depth>0) { // 답변글
$wr_reply = $old_wr_reply;
if($old_depth<$depth)
$wr_reply.= 'A';
else {
$head = substr($wr_reply,0,$depth-1);
$tail = substr($wr_reply,-1);
$wr_reply = $head.chr(ord($tail)+1);
}
$wr_parent = $wr_id;
} else { // 원본글
$wr_id = '';
$wr_reply = '';
$wr_parent = '';
$wr_num--;
}
$sql_insert = "insert into test set
wr_num = '{$wr_num}',
wr_reply = '{$wr_reply}',
wr_parent = '{$wr_parent}'
";
sql_query($sql_insert); // 내용 입력
}
답변 1
mysql query 예문
select CAST(120.45 AS INT) as c_int;
혹은 substring_index
select substring_index(120.45,'.',1), substring_index(120.45,'.',-1) ;
substring_index는 문자열에 적용해야 하는건데, 숫자자체에도 되는지는 테스트 해보시면 됩니다.