背景:
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/