Есть у меня ещё вот такая процедура
CREATE PROCEDURE "StripRef" (
"iRef" VARCHAR(84))
RETURNS (
"StrippedRef" VARCHAR(84))
AS
DECLARE VARIABLE C VARCHAR(1) CHARACTER SET UNICODE_FSS;
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE CL INTEGER;
BEGIN
"StrippedRef" = '';
I = 1;
CL = CHAR_LENGTH(TRIM(:"iRef"));
WHILE (I < CL) DO
BEGIN
C = SUBSTRING(:"iRef" FROM I FOR 1);
IF (
(C <> ' ')
AND (C <> '.')
AND (C <> '-')
AND (C <> '/')
AND (C <> '\')
AND (C <> '=')
AND (C <> '?')
AND (C <> '*')
AND (C <> ',')
AND (C <> ':')
AND (C <> '|')
AND (C <> '+')
AND (C <> '(')
AND (C <> ')')
AND (C <> '—')
AND (C <> '«')
AND (C <> '»')
AND (C <> '"')
AND (C <> '@')
) THEN
"StrippedRef" = "StrippedRef" || C;
I = I + 1;
END
"StrippedRef" = UPPER(TRIM("StrippedRef"));
END;
Если ей передать строку 56% то результат будет 56 без знака процента.