加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否可以在sqlite中创建一个javascript用户定义的函数

发布时间:2020-12-12 19:09:53 所属栏目:百科 来源:网络整理
导读:背景: Firefox 3包含 SQLite版 3.5.9. Firefox还允许扩展,它们是用javascript和 可以调用嵌入式SQLite引擎. 如预期的那样,执行以下操作 SQL语句“SELECT”TEXT“REGEXP “T *”;”给出错误,因为有 没有REGEXP函数本来包含在SQLite中. javascript包含一个内
背景:

> Firefox 3包含
SQLite版
3.5.9. Firefox还允许扩展,它们是用javascript和
可以调用嵌入式SQLite引擎.
>如预期的那样,执行以下操作
SQL语句“SELECT”TEXT“REGEXP
“T *”;”给出错误,因为有
没有REGEXP函数本来包含在SQLite中.
> javascript包含一个内置的正则表达式函数.
> SQLite通过SELECT load_extension(‘filename’)允许可加载的扩展;

题:
可以在SQLite中加载一个扩展名,这个扩展名是用可以做REGEXP的javascript编写的?

是.可以调用javascript函数
//(thanks to Mirnal Kant,SQLManager)
//Version 2 -- Prevent Firefox crashing 
//          -- Suspect a problem with continual creation of Regex objects

var g_RegExpString = null;
var g_RegExp = null;

//functions to be created for the db
var smDbFunctions = { 
  // (0) = Regex Expression
  // (1) = Column value to test
    regexp: {
        onFunctionCall: function(val) {
            if (g_RegExp == null || val.getString(0) != g_RegExpString) 
            {
                g_RegExpString = val.getString(0);
                g_RegExp = new RegExp(g_RegExpString);
            }
            if (val.getString(1).match(g_RegExp)) return 1;
            else return 0;
        }
    }
};

实例化一个SQLite实例之后:

Database.createFunction("REGEXP",2,smDbFunctions.regexp);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读