0
我想从Javascript中的GET字符串中提取子字符串以将它们传递给PostgreSQL上的查询。 我已经尝试过PostgreSQL全文搜索,但最终出现了问题,即全文搜索只允许前缀匹配(Already described here)。PostgreSQL多个子字符串搜索
所以我正在寻找使用带有通配符的子串的数组的'ILIKE ALL(array)'。
SELECT *从包裹WHERE DOC ILIKE ALL(阵列[ '%substr1%', '%substr2%', '%substr3%']);
我把我的GET字符串分解成Javascript这样。
var str =(GET()['search'])。split('+');
这给了我一个子串的数组。 如何在regEx中为每个子字符串添加开头和结尾的%? 还是有更好的方法来实现这个?
就像一个魅力。我只需要将%编码到%25并添加'as%27,这样我的查询就可以通过GET发送了。所以:'var str =(GET()['search'])。split('+')。map(function(word){ return'%27%25'+ word +'%25%27'; });'做这项工作。我的Where子句然后被调用通过:'where:“doc ilike all(array [”+ str +“])”,' – geom
啊,是的,你实际上可以使用'return encodeURIComponent(“'%”+ word +“ %'“)',这样你就可以将编码保留为JavaScript,如果它们出现在单词本身中,它也会转义特殊字符。虽然我注意到一个报价不被认为是特殊的,所以我不确定为什么它会成为你的情况的一个问题。 – trincot