database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41825 게시물 읽기
No. 41825
문자열 수식 계산하는 쿼리
작성자
group
작성일
2020-11-12 09:52
조회수
2,044

1,000.000원 * 20개 * 30%

1.000.000원

위 두개의 데이터  숫자만 입력 되어 있거나 산식으로 입력되어 있는 경우

계산을 해서 리턴을 해주고 숫자만 입력되어 있는경우 숫자만 리턴해 줄 수 있는 방법이 있나요?

이 글에 대한 댓글이 총 3건 있습니다.

아래처럼 리눅스의 eval 명령과 유사한 기능을 하는 함수를 만들어서 사용하는 방법이 있습니다.

쿼리로만 가능할지는 모르겠네요. 문자열에 '원, 개, %'가 들어가면 아마 전처리를 해야할 듯 합니다.


출처 : http://hidowb.blogspot.com/2008/05/eval-function.html

create or replace function eval (expr varchar2)

return varchar2

as


ret varchar2(4000);


begin

execute immediate 'begin :result := ' || expr || '; end;'

using out ret;

return ret;

end;


** 테스트


with t as (

select '1000000 * 20 * 0.3 ' c1 from dual

union all select '1000000' from dual

)

select eval (c1) from t


EVAL(C1)

--------------------------------------------------------------------------------

6000000

1000000

정상규(pajama)님이 2020-11-12 10:14에 작성한 댓글입니다.
WITH t AS (
SELECT '1,000.000원 * 20개 * 30%' x FROM dual
UNION ALL SELECT '1.000.000원' FROM dual
)
SELECT x
     , y
     , TO_NUMBER(
       dbms_xmlgen.getxmltype('SELECT ' || y || ' FROM dual').Extract('//text()')
       ) z
  FROM (SELECT x
             , REGEXP_REPLACE(REPLACE(x, '%', '/100'), '[^0-9()*/+-]') y
          FROM t
        )
;
마농(manon94)님이 2020-11-13 11:17에 작성한 댓글입니다.
이 댓글은 2020-11-16 17:12에 마지막으로 수정되었습니다.

함수보다 마농님의 쿼리를 사용하시는 게 더 나아 보이네요~~

정상규(pajama)님이 2020-11-13 13:14에 작성한 댓글입니다.
이 댓글은 2020-11-13 13:15에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41828쿼리문 에러 [3]
신승익
2020-11-23
2812
41827타입변환(to_number) 관련 문의 드립니다. [2]
이상영
2020-11-18
1867
41826이상하네요. toad에서는 오류가 전혀없는데..리눅스터미널에선 에러작살이네요. [1]
김건우
2020-11-13
1816
41825문자열 수식 계산하는 쿼리 [3]
group
2020-11-12
2044
41824테이블스페이스 조회하는쿼리인데...사용율까지 나오게 하려는데...계산을 잘못한건가요? 도움주세요 [2]
김건우
2020-11-11
1808
41823아래 질문이어서...show parameter local_listener에서 value값 안나옴
김건우
2020-11-10
1717
41822오라클 리스너 시작 시...오류?인지 오류아닌지 모를 메세지 뜨는데...해결방법? [1]
김건우
2020-11-10
1743
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다