excel 从Firebird查询结果中删除非标准ASCII字符

des4xlb0  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(99)

我们使用ODBC连接将数据从基于Firebird 2.5的Ostendo下载到Excel中。
我们在连接数据中包含非标准ASPLAN字符的表字段时遇到了问题。这些通常来自于被复制并粘贴到一个名为“作业笔记”的字段中的电子邮件(这是一种数据类型blob)。
是否可以检查每个字符的字符数是否大于126,如果是,则将其替换为“{?}”或将整个字段替换为“未下载-包含特殊字符 *”。或者是否有一个函数已经这样做了?我在网上找到的大多数人都有语言问题,但对我们来说,这是一种用于工程的语言和字符的混合体。

4xrmg8kj

4xrmg8kj1#

你可以使用像”substring(src_str类似)这样的语法,如果你需要更简单的语法,你可以创建自己的函数,比如:

CREATE OR ALTER FUNCTION F_REMOVE_SPECIALCHARS(
  IN_STR VARCHAR(8000))
RETURNS VARCHAR(8000)
AS
declare variable IN_SIZE integer;
declare variable IDX integer;
declare variable OUT_STR varchar(8000);
begin
  /* Function Text */
  in_size = char_length(IN_STR);
  idx = 1;
  out_str = '';
  while (idx < in_size+1) do
   begin
    if (lower(substring(in_str from idx for 1)) in
                  ('a','b','c','d','e','f','g','h','i',
                   'l','m','n','o','p','q','r','s','t',
                   'u','v','x','y','k','j','@','-','_',
                   '1','2','3','4','5','6','7','8','9',
                   '0',' ')

    ) then
     begin
      out_str = out_str || substring(in_str from idx for 1);
     end
    idx = idx + 1;
   end
  return out_str;
end

在这种情况下,您可以维护所需字符的选择

相关问题