Есть у меня ещё вот такая процедура

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 без знака процента.

Ответить