不PostgreSQL支持 \b?

我在尝试 \bAB\b 但这并不匹配的任何东西,但 (\W|^)AB(\W|$) 不。这些表2基本上是相同的,不是吗?

有帮助吗?

解决方案

PostgreSQL使用 \m, \M, \y\Y 作为词的界限:

\m   matches only at the beginning of a word
\M   matches only at the end of a word
\y   matches only at the beginning or end of a word
\Y   matches only at a point that is not the beginning or end of a word 

看看 经常表达的约束逃脱 在该手册。

还有 [[:<:]][[:>:]], ,这比赛开始和结束的一个字。从 该手册:

有两种特殊情况的架表达方式:支架式 [[:<:]][[:>:]] 是的约束,匹配的空串的开始和结束的一个字。一个词定义为一个序列中的字字既不是之前,也没有随后的字符。一个单词的角色是一个alnum字(作为定义的ctype)或一个下划线。这是一个扩展,兼容,但不是指定由POSIX1003.2,并且应当谨慎使用软件的用意是便携式的其他系统。约束逃脱下面描述通常是优选的(他们没有更多的标准,但当然是更容易类型)。

其他提示

一个简单的例子

select * from table_name where column ~* '\yAB\y';

这将匹配 AB ab ab - text text ab text AB text-ab-text text AB text ...

但你必须要使用:

select * from sometable where name ~* '\\yAB\\y';

如果你有 standard_conforming_strings 标志 设置 OFF.注意到 双斜线.
你可以手动设置它:

set standard_conforming_strings=on;

然后:select * from table_name where column ~* '\yAB\y'; 应工作。

确切的词搜索的中文本:

我正面临着以下问题。

我想要搜索所有接触其具有'技术'为确切的词在标题,但是在结果是取得结果的标题具有'主任',我是使用以下查询

select * from contacts where title ilike '%cto%';

我还试图与whitspaces周围的通配符作为'%的首席技术官%',这是获取与案文其中包含的'技术',得到的结果,如'副总裁、首席技术官和管理',但没有结果有确切的标题为'技术'.

我想既'副总裁、首席技术官和管理'和'技术'在结果,但不是'主任'的结果

以下为我工作

select * from contacts where title ~* '\\ycto\\y';

~   Matches regular expression, case sensitive
~*  Matches regular expression, case insensitive    
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top