Subject | Is there a CHARACTERDIFF() function in Firebird? |
---|---|
Author | red_october2009 |
Post date | 2012-09-22T14:14:37Z |
I'm building an application that includes a BLOB SUB_TYPE 1 (Memo) field to store free text. The Memo field will typically store 4800 characters, and several users may make changes to the 4800 characters. I want to keep a log of ONLY the CHANGES made to the 4800 characters. I don't want to keep full copies of the OLD. and NEW. versions of the entire 4800 character field each time a change is made, because that's a big waste of storage space, and it's difficult for a human to read through both copies to see the differences.
It would be very cool if Firebird had a CHARACTERDIFF() function that would take the following parameters:
CHARACTERDIFF
(
ORIGINAL BLOB SUB_TYPE 1, (Example: OLD.FIELDNAME)
CHANGED BLOB SUB_TYPE 1 (Example: NEW.FIELDNAME)
INCLUDE_POSITION_INFO CHAR(1) (Example: Y or N)
)
RETURNS
(
BLOB SUB_TYPE 1
);
The output would be formatted like:
(If Position info = 'N')
Added: "however there", "cannot undergo", "2012-Sep-21"
Changed: "Sumday"/"Sunday", "unadle"/"unable"
Deleted: "a-hole"
(If Position info = 'Y')
Added: 28 "however there", 512 "cannot undergo", 4032 "2012-Sep-21"
Changed: 16 "Sumday"/"Sunday", 4710 "unadle"/"unable"
Deleted: 2371 "a-hole"
-------------------------------------
Combined with the CURRENT_USER, I could make a nice neat little log, that would be easy to read and use storage efficiently.
Does Firebird have something like this? If not, does anyone have a Stored Procedure that can do this?
Thanks in advance.
It would be very cool if Firebird had a CHARACTERDIFF() function that would take the following parameters:
CHARACTERDIFF
(
ORIGINAL BLOB SUB_TYPE 1, (Example: OLD.FIELDNAME)
CHANGED BLOB SUB_TYPE 1 (Example: NEW.FIELDNAME)
INCLUDE_POSITION_INFO CHAR(1) (Example: Y or N)
)
RETURNS
(
BLOB SUB_TYPE 1
);
The output would be formatted like:
(If Position info = 'N')
Added: "however there", "cannot undergo", "2012-Sep-21"
Changed: "Sumday"/"Sunday", "unadle"/"unable"
Deleted: "a-hole"
(If Position info = 'Y')
Added: 28 "however there", 512 "cannot undergo", 4032 "2012-Sep-21"
Changed: 16 "Sumday"/"Sunday", 4710 "unadle"/"unable"
Deleted: 2371 "a-hole"
-------------------------------------
Combined with the CURRENT_USER, I could make a nice neat little log, that would be easy to read and use storage efficiently.
Does Firebird have something like this? If not, does anyone have a Stored Procedure that can do this?
Thanks in advance.