Tarantool中的SQL LIKE查询

时间:2016-03-14 12:25:20

标签: sql sql-like tarantool

使用SQL LIKE关键字在Tarantool DB中进行查询的正确方法是什么? 例如:

SELECT * FROM space where smth LIKE '%some_value%';

我可以使用索引的一部分搜索值,还是需要编写自己的LUA脚本来实现此类功能?

3 个答案:

答案 0 :(得分:4)

是的,你应该写Lua Script,它会在空间上迭代并在元组的gsub字段上使用lua函数'smth'。 现在,没有办法搜索字符串的一部分。

答案 1 :(得分:2)

如果您使用的是tarantool 2.x版,则查询没有问题。

SELECT * FROM "your_space" WHERE "smth" LIKE '%some_value%';

答案 2 :(得分:0)

使用存储过程进行基于前缀的最佳搜索。 例如,此代码段也适用于西里尔文字:

box.schema.create_space('address')
box.space.address:create_index('prefix', { type = 'tree', parts = { { 1, 'str', collation = 'unicode_ci' } }, unique = true })

select_by_prefix = function(prefix)
    local result = {}
    for _, addr in box.space.address.index.prefix:pairs(prefix, { iterator = 'GT' }) do
        if utf.casecmp(utf.sub(addr[1], 1, utf.len(prefix)), prefix) == 0 then
            table.insert(result, addr)
        else
            break
        end
    end
    return result
end