小编rsl*_*lnx的帖子

如何在PostgreSQL中获取字符串中regexp匹配的位置?

我有一个带书名的表格,我想选择标题与正则表达式匹配的书籍,并按标题中正则表达式匹配的位置排序结果.

单词搜索很容易.例如

TABLE book
id   title
1    The Sun
2    The Dead Sun
3    Sun Kissed
Run Code Online (Sandbox Code Playgroud)

我打算把.*发送查询DB之前,字与字之间在客户端的搜索词,所以我会写在这里准备的正则表达式SQL.

SELECT book.id, book.title FROM book
    WHERE book.title ~* '.*sun.*'
    ORDER BY COALESCE(NULLIF(position('sun' in book.title), 0), 999999) ASC;

RESULT
id   title
3    Sun Kissed
1    The Sun
2    The Dead Sun
Run Code Online (Sandbox Code Playgroud)

但是如果搜索词有多个单词,我想匹配标题,这些标题包含搜索词中的所有单词和它们之间的任何内容,并按照之前的位置排序,所以我需要一个返回正则表达式位置的函数,我没有在PostgreSQL官方文档中找到合适的一个.

TABLE books
id   title
4    Deep Space Endeavor
5    Star Trek: Deep Space Nine: The Never Ending Sacrifice
6    Deep Black: Space Espionage and National Security

SELECT book.id, book.title FROM …
Run Code Online (Sandbox Code Playgroud)

regex sql database postgresql

5
推荐指数
1
解决办法
4602
查看次数

是`try:... except:raise`用Python做任何事情?

我看到这样的代码:

try:
    print abc # actually different code was here but it doesn't matter, right?
except:
    raise
Run Code Online (Sandbox Code Playgroud)

是否有理由投入print abc这种奇怪的try: except: raise建筑?Except子句只有一个raise操作,所以如果捕获了异常,它只被重新加入外部,对吧?所以我猜这个结构除了代码行之外什么也没带来,对吗?

python exception-handling

-1
推荐指数
1
解决办法
79
查看次数

标签 统计

database ×1

exception-handling ×1

postgresql ×1

python ×1

regex ×1

sql ×1