Fabiano wrote:

Is there some native way in FB 2.1 to convert from a UUID or any octet field to a human readable or url friendly format (i.e. hexadecimal or base64)?

Ivan Prenosil answers:

No. But you can

  • format value on client, or
  • write UDF to do it, or
  • convert using PSQL code, something like
EXECUTE BLOCK RETURNS(UUID VARCHAR(32)) AS
DECLARE VARIABLE U CHAR(16) CHARACTER SET OCTETS;
DECLARE VARIABLE C INTEGER;
DECLARE VARIABLE I INTEGER;
BEGIN
  U = GEN_UUID();
  UUID = '';
  I = 1;
  WHILE (I <= OCTET_LENGTH(U)) DO BEGIN
    C = ASCII_VAL(SUBSTRING(U FROM I FOR 1));
    UUID = UUID || SUBSTRING('0123456789ABCDEF' FROM BIN_SHR(C, 4)+1 FOR 1)
                || SUBSTRING('0123456789ABCDEF' FROM BIN_AND(C, 15)+1 FOR 1);
    I = I + 1;
  END
  SUSPEND;
END

Like this post? Share on: TwitterFacebookEmail


Related Articles


Author

Firebird Community

Published

Category

Gems from Firebird Support list

Tags