有没有类似的东西
SELECT * FROM foo WHERE base64(bar) LIKE '%bararar%'
在 SQLite 中?
如果没有,在其他 SQL 风格的数据库中是否有其他可比较的功能? (MySQL、MSSQL等)
我真的需要知道这一点,因为我有一个庞大的数据库,其中一些字符串的 base64 编码包含我必须过滤掉的特定字符。希望有人能帮助我。
最佳答案
System.Data.SQLite 支持 .NET 中的自定义函数。如果您使用的是不执行此操作的不同包装器,请更改包装器。最新版本在这里:
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
它曾经在这里,但现在是 SQLite 主项目的一部分:
http://sqlite.phxsoftware.com/
例子:
[SQLiteFunction(Name = "Base64", Arguments = 1, FuncType = FunctionType.Scalar)]
class Base64SQLite : SQLiteFunction
{
public override object Invoke(object[] args)
{
// assumes args[0] is a string, but you can handle binary data too
var bytes = Encoding.UTF8.GetBytes(Convert.ToString(args[0]));
return Convert.ToBase64String(bytes);
}
}
如果您要对这些数据进行大量搜索,尤其是通配符搜索,那么您最好缓存数据(使用触发器)并将其放入 FTS 索引中。
关于database - SQLite 中的 Base64?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6246538/