MySQL cast 사용법 0 2 668

by xcrew [SQL Query] [2019.11.12 10:44:31]


안녕하세요.

http://www.gurubee.net/article/69134 이글을 참조하여 따라해보고 있습니다.

두가지 궁금한점이 있는데요.  첫번째는 위와 같은 방식으로 했을때 파일이 대용량일때 문제가 없는지 궁금합니다.......

그리고 테이블을 똑같이 만들고 MySql로 만들어보고 있는데요

아래의 쿼리  || '\'|| <--이 부분에서 에러가 나는것 같은데요....mysql은 아래 쿼리를 어떻게 수정해야 될까요?

 

WITH RECURSIVE cte_table(directory_id, directory_name, directory_id_ref, full_path) AS
(
select directory_id, directory_name, directory_id_ref, directory_name as full_path
from directory
WHERE directory_id_ref is null

union all

select a.directory_id, a.directory_name, a.directory_id_ref, cast(b.full_path || '\'|| a.directory_name as varchar(100))
from directory a inner join cte_table b
on (a.directory_id_ref = b.directory_id)
)
select * from cte_table

 

by DarkBee [2019.11.12 11:03:46]
Mysql 에서 CAST 함수로 변환할수 있는 타입은 아래라고 하네요

1. BINARY
2. CHAR
3. DATE
4. DATETIME
5. TIME
6. DECIMAL
7. JSON (MySQL 5.7.8부터 제공됨)
8. NCHAR
9. SIGNED [INTEGER]
10. UNSIGNED [INTEGER]

그리고 이미 VARCHAR타입인데 캐스팅을 굳이 할 이유가 있나요, 만약 한다고 하면
cast(CONCAT(b.full_path , '\\', a.directory_name ) as CHAR )
또는 
cast(CONCAT(b.full_path , CHAR(92), a.directory_name ) as CHAR )
가 됩니다.

 


by 마농 [2019.11.12 14:59:17]

1.계층쿼리는 대용량에서 성능문제 있습니다.

2. Union 양쪽 자료형을 맟추려면 위에도 cast 해야죠.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입