Hello Experts, As per business needs we need to store Zero(0) in primary key column of table with this kind of value
à 07******** with applications written in Java microservices. We are not able to use numeric data type
as it trims the Zero value in leading, but it’s also a performance impact if we define
varchar in the data type. Please suggest. Thanks |
Use datatype smallint(1) for storing zero or use Boolean datatype. On Wed, Jan 20, 2021, 4:43 PM <[hidden email]> wrote:
|
Hi, How about storing the actual number in TEXT column and adding a separate INT primary key column where you either copy the number or use it as a generated column? Or, if you actually want to include the leading zeroes in the primary key, how about two-column primary key like this: So, the number "0005556879" would become a primary key (3, 5556879). Sincerely, Anssi Kanninen From: Nidhi Gupta <[hidden email]>
Use datatype smallint(1) for storing zero or use Boolean datatype. On Wed, Jan 20, 2021, 4:43 PM <[hidden email]> wrote:
|
Thanks , will test this both as need to check the entity mappings from my Java spring boot. From: Kanninen Anssi EXT <[hidden email]>
Hi, How about storing the actual number in TEXT column and adding a separate INT primary key column where you either copy the number or use it as a generated column? Or, if you actually want to include the leading zeroes in the primary key, how about two-column primary key like this: So, the number "0005556879" would become a primary key (3, 5556879). Sincerely, Anssi Kanninen From: Nidhi Gupta <[hidden email]>
Use datatype smallint(1) for storing zero or use Boolean datatype. On Wed, Jan 20, 2021, 4:43 PM <[hidden email]> wrote:
|
In reply to this post by soumik.bhattacharjee
[hidden email] schrieb am 20.01.2021 um 12:13:
> As per business needs we need to store Zero(0) in primary key column > of table with this kind of value à 07******** with applications > written in Java microservices. > > We are not able to use *numeric data type *as it trims the Zero value > in leading,**but it’s also aperformance impact if we define *varchar* > in the data type. While there is a performance impact between an integer and varchar, in my experience it's rarely that big that it will become a problem. Thomas |
In reply to this post by soumik.bhattacharjee
On Wed, Jan 20, 2021 at 4:13 AM <[hidden email]> wrote:
A true number stores leading zeros since all bits in the representation are always present regardless of whether they are zero or one. Thus it is a cosmetic presentation choice to suppress displaying those leading zeros, not a storage one. If these aren't true numbers, i.e., "0001" and "000001" are actually different, then what you have is a string that only uses numbers. Model that using text and let the performance fall where it will. David J. |
In reply to this post by soumik.bhattacharjee
Hi, First of all, if you consider 0001 and 00001 as different values then you have two solution
If 0001 and 00001 are considered the same or let’s say that it is impossible to have these two values in your primary key then the question is simply a representation one and the choice should be
select to_char(12, '0999'); to_char --------- 0012 Regards Michel SALAIS De : [hidden email] <[hidden email]> Hello Experts, As per business needs we need to store Zero(0) in primary key column of table with this kind of value à 07******** with applications written in Java microservices. We are not able to use numeric data type as it trims the Zero value in leading, but it’s also a performance impact if we define varchar in the data type. Please suggest. Thanks |
Free forum by Nabble | Edit this page |