tedious icon indicating copy to clipboard operation
tedious copied to clipboard

String support for Decimal and Numeric values

Open emgee3 opened this issue 10 years ago • 9 comments

Values returned from BigInt datatypes are returned as JavaScript strings ( https://github.com/pekim/tedious/blob/master/src/tracking-buffer/bigint.coffee), due to JavaScript numbers being limited to 53 bits of data.

Decimal and Numeric types can also expand beyond this range. It would be nice to (optionally) allow sending and receiving numeric data as Strings for Decimal and Numeric types.

For a project I'm working on the id column of the table is a Decimal, so this would be useful.

emgee3 avatar Jul 04 '14 10:07 emgee3

Sorry this has gone unresponded to for so long. I definitely think it's a good feature request, but have no ETA on implementation. If it's important for your project, you should consider fixing it yourself and submitting a pull request. Otherwise, I'll leave this open and someone will get to it eventually.

bretcope avatar Jul 11 '14 05:07 bretcope

I currently have a solution that just returns any number with > 53 bits of data as a String but not sure this is the most elegant solution. I'm more than willing to implemented the elegant solution, would just like some advisement on the best way to do so.

cdm6a avatar Apr 21 '16 22:04 cdm6a

I would like to get a number back instead of a string.

TheFarmer1 avatar Oct 05 '16 00:10 TheFarmer1

A question about implementation, we know that BIGINTs can be >53 bits of data but is there a max number of bits or is it like Python's long type? It could be that BIGINTS are returned as a LONG (an npm module for 64 bit integers) or another similar type.

Nokel81 avatar Oct 11 '16 17:10 Nokel81

I thought about this a bit in the context of https://github.com/tediousjs/tedious/issues/490 @cdmcnamara We don't want to return different data types depending on the value, that just makes it more difficult to code against.

@Nokel81 Using a npm module like bignum seems reasonable but it'll break all existing code. So it'll need to be config option, not turned on by default.

If this sounds like a good idea to enough folks, I can look into it coding this some time.

@arthurschreiber for thoughts.

tvrprasad avatar Feb 15 '17 19:02 tvrprasad

Hi there, I guess ultimately it would be nice to be able to define custom encoders in tedious, ref. #678. A workaround idea that worked for me: cast the Decimal column to Varchar in the SELECT statement, maybe even cast to Bigint.

fennibay avatar Mar 19 '19 14:03 fennibay

Is this thing is not available yet?

KAMAELUA avatar Mar 03 '21 17:03 KAMAELUA

Is this PR going to be merged? https://github.com/tediousjs/tedious/pull/1493

Really need a feature to optionally return numeric value as string as we have long decimal numbers

ml-rex avatar Dec 15 '23 05:12 ml-rex

Hi @ml-rex , will bring this PR up again. See if we can work with @arthurschreiber update and merge this if there is not other concern on this change. I think Arthur has a another idea under #678 for refactor data type handling that should also cover this is, but we have not got the band width to actually to work on it yet.

MichaelSun90 avatar Dec 15 '23 18:12 MichaelSun90