Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

Is there a way to get the actual encoded string saved in the Database of column with DataType Bytea.Because when the record is fetched in C# it returns as System.Byte[] which i don't want. I want the data which is saved in that column

E'\\\142\\\247\\\ and so on till the data ends.

I will appreciate your support

When I am querying the data through

SELECT tpl::TEXT from Cards where ecode="xyz";

I get the following error

Error: Cannot cast type bytea to text
Line1: Select tpl::TEXT from cards

Thank you

like thisNormal Qurey enter image description here

As you see that the Bytea column is showing System.Byte[] which was overwritten by my application because the code in the C # store the data in the DataTable column as System.Byte[] while updating the data i didnt decoded it and update it .

I am using Navicat premium when I qurey data it shows me the result when i right click on the grid result and copy as insert statement it shows me two reesult for different rows

like this

INSERT INTO "public"."cards" ("ecode", "tpl") VALUES ('4210149888659', E'System.Byte[]');

INSERT INTO "public"."cards" ("ecode", "tpl") VALUES('3650257637661',E '\\247\\377\\001\\021\\340\\000\\230\\000\\002U\\000e\\000\\362\\000\\002-\\000\\253\\000p\\000\\002\\207\\000~\\000g\\000\\002\\215\\000{\\000\\317\\000\\002\\334\\000h\\000\\222\\000\\001|\\000\\004\\001U\\000\\002\\202\\000K\\000\\201\\000\\001\\000\\000\\204\\000\\241\\000\\001w\\000\\213\\000\\305\\000\\002\\021\\000V\\000\\237\\000\\002L\\001=\\001\\364\\000\\001X\\001"\\001\\313\\000\\002J\\000\\010\\001\\324\\000\\001\\370\\000\\037\\001J\\000\\002;\\0017\\000\\202\\000\\002\\300\\000\\317\\0007\\000\\002\\215\\000[\\000\\004\\011\\017\\007\\012\\005\\015\\014\\006\\016\\012\\007\\010\\005\\005\\007\\011\\010\\001\\004\\012\\017\\002\\003\\010\\012\\004\\010\\005\\003\\013\\014\\005\\017\\007\\003\\010\\003\\001\\011\\004\\012\\006\\020\\011\\005\\013\\015\\010\\002\\004\\005\\010\\007\\011\\012\\000\\002\\002\\020\\012\\003\\015\\000\\005\\002\\017\\003\\000\\006\\016\\020\\010\\017\\014\\000\\001\\012\\001\\010\\011\\002\\004\\007\\010\\000\\002\\006\\011\\007\\003\\020\\011\\003\\001\\005\\011\\000\\007\\002\\012\\002\\000\\020\\000\\016\\004\\017\\004\\003\\011\\017\\000\\003\\004\\000\\001\\007\\017\\002\\001\\017\\014\\006\\002\\016\\015\\011\\015\\006\\014\\016\\010\\020\\013\\000\\003\\006\\015\\002\\005\\020\\015\\016\\015\\004\\001\\003\\015\\010\\010\\006\\014\\002\\007\\020\\014\\011\\001\\000\\014\\010\\003\\016\\001\\015\\017\\020\\013\\006\\013\\016\\013\\011\\001\\014\\013\\004\\013\\002\\013\\001\\000'
);
share|improve this question
    
do you want to convert byte array to string? –  Sathish Nov 12 '13 at 8:02
    
How is this different to your previous question, stackoverflow.com/q/19914761/398670 ? –  Craig Ringer Nov 12 '13 at 8:06
    
I am trying to explore the possibilities if this can be done easily then I guess I wont be needing any of the Bucardo and other stuff because I have the application written and I am just getting the issue with the bytea data thats all . I hope you can help me –  Shakoor Alam Nov 12 '13 at 8:08
    
I hope you can assist me as your a professional in working with PostGres –  Shakoor Alam Nov 12 '13 at 8:09
    
@SATSON yes I want to convert byte array to string .. because the way it was coded in was through Griaule SDK for Thumb impressions. –  Shakoor Alam Nov 12 '13 at 8:10

1 Answer 1

You can't just convert it because PostgreSQL can't guarantee it can be converted safely. The best you can do is to convert the escaped form into a string and that's not what you probably want. Keep in mind that since bytea is binary data there is no way that PostgreSQL can be sure that the string that comes out will be legit. You could have embedded nulls in a UTF-8 string, for example, which could cause some fun with buffer overruns if you aren't careful.

This is the sort of thing that should be done in the client-side and you should assume that the data is binary, and not necessarily a valid string. If you want to store strings, store text fields, not bytea.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.