是否可以通过SQL中匹配单词的位置(索引)选择句子?
我的意思是这样的选择查询:
如果有的话,欢迎任何例子。
致谢
答案 0 :(得分:2)
如果我的理解正确,您可以使用position()
和order by
来接近您想要的东西
order by position(' ' || @search_pattern, ' ' || sentence)
如果要过滤数据,可以将句子拆分为单词并查看每个单词:
select *
from (values ('a abc def asdfdsf. kljkj')) v(sentence) cross join lateral
regexp_split_to_array(sentence, '[^\w]+') words
where words[1] like @pattern || '%' or
words[2] like @pattern || '%' or
words[3] like @pattern || '%' or
sentence like @pattern || '%'
答案 1 :(得分:1)
您可以尝试使用类似Postgres的正则表达式功能。例如,要在第二个单词的开头查找模式,可以使用:
select *
from your_table
where sentence ~ '^\w+\s+\ypattern';
通常,要在第N个单词的开头查找模式,可以使用:
select *
from your_table
where sentence ~ '^(?:\w+\s+){n-1}\ypattern';