June 29, 2008 at 5:57 pm
fisher08 (6/27/2008)
John Oliver (6/25/2008)
Agree with Stephanie and Jeff, but only on the condition that length of the data is always going to be the same.If you know that the data is always going to be 5 digits long, then as stated previously, store them as INT.
When you need to export them, format the data.
If, on the other hand, the field length is not always 5 digits, then you will have to store the formatted data as you get it.
In which case, you will have to define either a VARCHAR or NVARCHAR data field.
The field will not change, if its 5 digits, it stays that way, I need to export this data on a monthly basis and we are taking about thousands of records, I haven't found an easy way to format after exporting that doesn't involve manually editing the file.
BUT, this month is done and I have another month to figure that out...:)
Sort of agree with the code posted by Kaushal, but isn't this a little complex?
Combining the solution posted by Kaushal and that from Jeff (Posted 6/22/2008 4:08 AM +10GMT) yeilds
-- Create a table with an Integer column
CREATE TABLE DBO.STUFFED (COL1 INT);
-- Insert some Test Data
INSERT INTO DBO.STUFFED VALUES (1);
INSERT INTO DBO.STUFFED VALUES (11);
INSERT INTO DBO.STUFFED VALUES (111);
INSERT INTO DBO.STUFFED VALUES (1111);
INSERT INTO DBO.STUFFED VALUES (11111);
-- Output the data in Char format with leading zeros, I assumed an output field length of 15, you can change that to suit your need
SELECT
RIGHT(REPLICATE('0', 5) + CONVERT(VARCHAR(5), COL1), 5)
FROM DBO.STUFFED
The code above will store the values in their INT format.
To return the formatted data, the data is converted to a VARCHAR, appended to a string of five zeros (providing the zero padding) and then stripping all but the right-most 5 characters from the value.
ie.
For the INT value 142.
CONVERT(VARCHAR(5), COL1) = '142'
REPLICATE('0', 5) + CONVERT(VARCHAR(5), COL1) = '00000142'
RIGHT(REPLICATE('0', 5) + CONVERT(VARCHAR(5), COL1), 5) = '00142'
You could even create a padding function that will take in the length of the final string.
Something you have to consider with this solution is what happens with the submitted value is greater than the string length.
123456 to be padded to a string of 5 characters.
-- John Oliver
Sometimes banging your head against a wall is the only solution.
June 29, 2008 at 6:34 pm
fisher08 (6/27/2008)
Its the partners specs not ours, we are working for them in a way or else they will go elsewhere...that's why don't ask why...:)
In that case, I'd ask "Why" every 15 minutes... I don't want a partner that can't answer the "Why" and I don't want a partner that get's pissy if I ask. 😉
--Jeff Moden
Change is inevitable... Change for the better is not.
Viewing 2 posts - 16 through 16 (of 16 total)
You must be logged in to reply to this topic. Login to reply