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)
但是,这仅匹配{}中的英语和一些非英语字符。
我对阿拉伯文本或 RTL 语言一无所知,但这很有效:
\n\ncreate 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%\');\nRun Code Online (Sandbox Code Playgroud)\n\nhttp://sqlfiddle.com/#!15/75b29/2
\n| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |