정수와 소수를 분리해서 디비 쿼리하는 방법

정수와 소수를 분리해서 디비 쿼리하는 방법

QA

정수와 소수를 분리해서 디비 쿼리하는 방법

본문

디비테이블  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는 문자열에 적용해야 하는건데, 숫자자체에도 되는지는 테스트 해보시면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 224
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT