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

标签 javascript sqlite

背景:

  • Firefox 3 包括 SQLite版本 3.5.9. Firefox 还允许使用 javascript 和 可以调用嵌入式SQLite引擎。

  • 正如预期的那样,执行以下操作 SQL 语句 'SELECT "TEXT"REGEXP “T*”;'给出一个错误,因为有 SQLite 中没有原生包含 REGEXP 函数。

  • javascript 包含一个内置的正则表达式函数。

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

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

最佳答案

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

关于javascript - 是否可以在 sqlite 中创建一个 javascript 用户定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/455292/

相关文章:

javascript - 颜色仅在激活随机按钮时改变

javascript - 如何在内容占位符中使用 JavaScript 设置标签文本属性?

android - 现有数据库不支持外键

ios - 在 Xcode iOS SDK 中读取 SQLite

database - 使用qt在数据库中的ID

android - 一个 SQLite 数据库中的多个表

javascript - 进程运行了多长时间(使用 Node)?

javascript - 如何在 Mojolicious perl 中正确加载 Javascript 文件?

javascript - 如何在 jquery 中动态地将链接元素的值传递给函数?

python - 现在的sqlite时区