안녕하세요 신입개발자 질문있습니다.
현재 mssql 사용중이고 프로시저에서 select 문으로 조회하기 만들고 있습니다.
어느 회사측에서 item의 규격사이즈와 가격을 계산하여 M당 가격을 원하고 있습니다.
규격컬럼의 데이터 값은 0.02*105*500 이고 가격은 1000원이였을 때 단순 계산만 해보았을 때 가격 / M(500)을 하면 2가 나옵니다. ex) 만약 0.06*47*1000 이였을 때 가격이 79,903원(콤마) 이라면 단순 계산으로만 79.903원(소수점)이 나옵니다.
헷갈리실까봐 구분해놓겠습니다.
하지만 이렇게 단순 계산을 할 수가 없는 이유중
1. 규격 컬럼이 우선 nvarchar형식
2. 규격 컬럼의 길이는 데이터마다 다름
3. 정수로 치환하라고 하지만 되지 않음.
4. 검색해본 함수 중 SUBSTRING , CHARINDEX 등 검색해본걸로 했지만 방법을 모르는건지 되지않았구요.
IF 조건문을 만들어서 해야할지 감이 안오네요.아무리 머리를 굴려도 힘드네요 선배님들 제발 부탁드립니다..~~
규격 형태에서 마지막 * 뒤에 숫자만 필요하다면 아래와 같은 형태로 한번 응용해 보세요
;WITH CTE
AS
(
SELECT 10.000 AS [수량], 100.0000 AS [단가], N'0.02*105*500' AS [규격], 1000.0000 AS [공급 가격] UNION ALL
SELECT 10.000 AS [수량], 7990.3000 AS [단가], N'0.06*47*1000' AS [규격], 79903 AS [공급 가격]
)
SELECT *
, CAST(REVERSE(SUBSTRING(REVERSE([규격]), 0, CHARINDEX('*', REVERSE([규격])))) AS BIGINT) AS [M]
, [공급 가격] / CAST(REVERSE(SUBSTRING(REVERSE([규격]), 0, CHARINDEX('*', REVERSE([규격])))) AS BIGINT) AS [단순계산 M당 가격]
FROM CTE;