먼저 현재 sybase db 버전이 입니다. Adaptive Server Enterprise 12.5.4입니다. 나는 varchar
으로 float 데이터 형식을 sybase 변환 함수를 통해 concat
변수의 이러한 종류 중 몇 가지를 순서대로 문자열 형식으로 변환하는 것을 목표로합니다.Sybase에서 float에서 varchar로 문제를 변환하십시오.
불행히도, 그렇지 않습니다. 단순히 convert(varchar(20), float_var)
또는 cast()
함수를 사용하면 정확하게 정확한 값을 반환 할 수 없습니다.
예를 들어, ...
declare @float_var float
begin
select @float_var =345.1237 --from table actually
select convert(varchar(20),@float_var) --return 345.1236999999
end
잘못된 문자열 결과는 때때로 99999
또는 00001
접미사가 돌아왔다.
정밀도를 지정하는 것을 포함하여 많은 기능을 시도했지만, 아직 여러 가지 경우가 있습니다. sybase 내부 함수가 정확하게 작동하지 않습니다.
나는 Sybase DB를 사용하는 동안 일반적인 문제라고 생각하지만, serach에서는 거의 답을 찾을 수 없습니다. 과거의 경험을 통해 Sybase 저장 프로 시저 gammer는 오류 발생시 런타임 및 내부 수정시 항상 일정한 허용 오차를 갖습니다. 이 문제는 Sybase가 내부적으로 어떻게 작동하는지 혼란스럽게합니다. 어떤 충고라도 감사 할 것입니다, 미리 감사드립니다.
는 precsii을 고려 float 데이터 형식에 대해 # cast (캐스팅 (cast) (10 진수 (38,15)로 varchar로 @float_var)를 사용하려고했으나 96.332와 같이 테스트를 통과 할 수 없습니다. 96.331999999999994 –
정확히 무엇입니까? 원하는 결과 ?? – SQLGuru
신속한 답변을 보내 주셔서 감사합니다. 이를 수행하는 주요 목적은 정밀도를 잃지 않고 float 데이터 유형을 문자열 데이터 유형으로 변환하는 것입니다. 즉,이 부동 유형 컬럼의 값은 선택 뷰에 표시되는 동안 변환 된 문자열과 완전히 동등해야합니다. 어떤 정밀도 나 스케일을 잃지 않고 이것을 (float에서 varchar로) 포괄하는 일반 함수가 필요합니다. @SQLGuru –