如何在Postgresql中搜索不同的字符集?

Sla*_*ice 5 regex sql postgresql unicode postgresql-9.1

我想在包含阿拉伯文和英文文本的postgres DB中搜索一个表。例如:

id | content
-----------------
1  | ????    
2  | chicken
3  | ???? chicken
Run Code Online (Sandbox Code Playgroud)

结果将使我进入第3行。

我想这与使用正则表达式限制字符有关,但是我找不到一种将两者都选择的干净方法。我试过了:

SELECT regexp_matches(content, '^([x00-\xFF]+[a-zA-Z][x00-\xFF]+)*')
FROM mg.messages;
Run Code Online (Sandbox Code Playgroud)

但是,这仅匹配{}中的英语和一些非英语字符。

dwu*_*urf 2

我对阿拉伯文本或 RTL 语言一无所知,但这很有效:

\n\n
create table phrase (\n  id serial,\n  phrase text\n);\n\ninsert into phrase (phrase) values (\'apple pie\');\ninsert into phrase (phrase) values (\'\xd9\x81\xd8\xb7\xd9\x8a\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xaa\xd9\x81\xd8\xa7\xd8\xad\');\n\nselect *\nfrom phrase\nwhere phrase like (\'apple%\')\nor phrase like (\'\xd9\x81\xd8\xb7\xd9\x8a\xd8\xb1\xd8\xa9%\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

http://sqlfiddle.com/#!15/75b29/2

\n