是否可以在sqlite中使用用户定义的函数,该函数将索引或主键与blob列一起使用?我有一个表示范围的特定格式的单列Blob主键,我想寻找一个参数,该参数也是可能在范围之一中的Blob。排序规则看起来很有希望,只是它仅适用于字符串。我需要可以返回-1、0或1并利用带斑点的索引的东西。
我尝试使用用户定义的函数,该函数可以工作并在范围内找到正确的值,但是由于只能返回0或1,因此会进行表扫描。例如:WHERE IN_RANGE(primary_key, search_value) = 1
我必须坚持使用这种blob格式,并且由于超出此问题范围的原因而无法分成多列。
答案 0 :(得分:0)
可能有一个index on the result of a deterministic user-defined function,但是只有在搜索值不是其参数之一(即,您可以将其重写为以下内容)时,该方法才有效:
... WHERE MyFunc(PrimaryKey) > MyFunc2(SearchValue) -- or BETWEEN with two values
实现自己的比较的唯一方法是创建一个virtual table,然后自己实现MATCH运算符:
... WHERE PrimaryKey MATCH SearchValue