当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《是否可以在sqlite中创建一个javascript用户定义的函数》经验,为你挑选了1个好方法。

背景:

Firefox 3包含 SQLite版本3.5.9.Firefox还允许使用javascript编写的扩展,并可以调用嵌入式SQLite引擎.

正如所料,执行以下SQL语句'SELECT"TEXT"REGEXP"T*";' 由于SQLite中没有本地包含的REGEXP函数,因此会出错.

javascript包含内置的regexp功能.

SQLite允许通过SELECT load_extension('filename')加载扩展;

问题: 是否可以在SQLite中加载一个用javascript编写的可以执行REGEXP的扩展?



1> Noah..:

是.可以调用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);

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有