Re : dash의 SQL로 숫자를 SELECT 할 때 쉼표를 삭제하고 싶습니다.
오즈비전의 하피타스 사업부에서는 사내 멤버가 빨리 집계하거나 프로덕션 데이터를 보는 도구로서 re:dash 를 사용하고 있습니다. 여기에서 오늘, 매우 간단한 개선 대응을 실시한 것이 기뻐했으므로, Qiita에 개인 메모로서 남겨 둡니다.
전제
Re:dash 는 2.0.0+b2990 (슬슬 화석...?)
Re : dash의 SQL로 숫자를 SELECT 할 때 쉼표를 삭제하고 싶습니다.
기본? 그럼 Re:dash 는 수치형을 표시할 때에 3 케타 단위로 콤마를 넣어 옵니다. 이것이 불필요한 케이스로, 콤마를 취하고 싶을 때의 대응 방법이 됩니다.
Re:dash 와 병용하고 있는 관리 화면에서는, 대상의 수치에 콤마를 넣지 않기 때문에, 일부러 콤마를 손으로 삭제하고 나서 데이터 일치를 실시하거나 하고 있었던 것 같습니다...힘들....
이 방법은 SQL 에 따라서는 퍼포먼스 영향이 나오는 경우가 있기 때문에, 가벼운 SQL 로 필요한 경우만 이용해 주세요.
Re:dash 측의 설정으로 대응 가능할지도 모릅니다만, 지금까지 발견되지 않습니다.
결론
char
에 캐스트 한다.
CAST (컬럼 이름 AS char) AS 컬럼 이름
※마지막 AS 컬럼명을 붙이지 않으면, 표시되는 컬럼명이 CAST(カラム名 AS CHAR)
가 되어 버리므로, 사내에 쿼리로 공유하거나 하는 경우에는 같은 이름으로 재명명하는 편이 무난합니다.
DB 구조
mysql> show create table daily_log;
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| daily_log | CREATE TABLE `daily_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`action` int(11) NOT NULL,
`sys_ins_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`sys_upd_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> desc daily_log;
+--------------+-----------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------+------+-----+---------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | MUL | NULL | |
| action | int(11) | NO | | NULL | |
| sys_ins_date | timestamp | NO | | 0000-00-00 00:00:00 | |
| sys_upd_date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+--------------+-----------+------+-----+---------------------+-----------------------------+
5 rows in set (0.00 sec)
캐스트 없음
SELECT user_id, action, sys_ins_date, sys_upd_date
FROM daily_log
ORDER BY id DESC
LIMIT 1;
캐스트 있음
SELECT CAST(user_id AS char) AS user_id, action, sys_ins_date, sys_upd_date
FROM daily_log
ORDER BY id DESC
LIMIT 1;
Reference
이 문제에 관하여(Re : dash의 SQL로 숫자를 SELECT 할 때 쉼표를 삭제하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/terra_yucco/items/7f91e001121c19cdb6f7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
기본? 그럼 Re:dash 는 수치형을 표시할 때에 3 케타 단위로 콤마를 넣어 옵니다. 이것이 불필요한 케이스로, 콤마를 취하고 싶을 때의 대응 방법이 됩니다.
Re:dash 와 병용하고 있는 관리 화면에서는, 대상의 수치에 콤마를 넣지 않기 때문에, 일부러 콤마를 손으로 삭제하고 나서 데이터 일치를 실시하거나 하고 있었던 것 같습니다...힘들....
이 방법은 SQL 에 따라서는 퍼포먼스 영향이 나오는 경우가 있기 때문에, 가벼운 SQL 로 필요한 경우만 이용해 주세요.
Re:dash 측의 설정으로 대응 가능할지도 모릅니다만, 지금까지 발견되지 않습니다.
결론
char
에 캐스트 한다.CAST (컬럼 이름 AS char) AS 컬럼 이름
※마지막 AS 컬럼명을 붙이지 않으면, 표시되는 컬럼명이
CAST(カラム名 AS CHAR)
가 되어 버리므로, 사내에 쿼리로 공유하거나 하는 경우에는 같은 이름으로 재명명하는 편이 무난합니다.DB 구조
mysql> show create table daily_log;
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| daily_log | CREATE TABLE `daily_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`action` int(11) NOT NULL,
`sys_ins_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`sys_upd_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> desc daily_log;
+--------------+-----------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------+------+-----+---------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | MUL | NULL | |
| action | int(11) | NO | | NULL | |
| sys_ins_date | timestamp | NO | | 0000-00-00 00:00:00 | |
| sys_upd_date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+--------------+-----------+------+-----+---------------------+-----------------------------+
5 rows in set (0.00 sec)
캐스트 없음
SELECT user_id, action, sys_ins_date, sys_upd_date
FROM daily_log
ORDER BY id DESC
LIMIT 1;
캐스트 있음
SELECT CAST(user_id AS char) AS user_id, action, sys_ins_date, sys_upd_date
FROM daily_log
ORDER BY id DESC
LIMIT 1;
Reference
이 문제에 관하여(Re : dash의 SQL로 숫자를 SELECT 할 때 쉼표를 삭제하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/terra_yucco/items/7f91e001121c19cdb6f7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)