如何从PostgreSQL表中只获取西里尔字符?

时间:2018-04-19 08:46:18

标签: sql postgresql unicode

我想找到一个PostgreSQL表的所有行都有西里尔字符。我尝试使用此查询:SELECT * FROM "items" WHERE (title SIMILAR TO '%[\u0410-\u044f]%'),我在这里:  Find all rows using some Unicode range (such as Cyrillic characters) with PostgreSQL?

它似乎有用,但除了西里尔语的价值,我也得到一些拉丁值。这怎么可能?我想也许,即使我正在写拉丁字母,如果我使用带有西里尔字符的键盘,其中一些可以被理解为西里尔字母。

无论如何,我在Java项目中使用这个数据库。通过代码存在更有效的解决方案吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您需要使用reqular表达式。 PostgreSQL中的函数名是REGEXP_MATCHES

文档:

另一种解决方案是使用true / false运算符:~

文档:Using regexps in PostgreSQL

答案 1 :(得分:0)

使用相同的面具:

t=# select regexp_replace('pol 398Родное Луговое abc 123','[^\u0410-\u044f]','','g');
 regexp_replace
----------------
 РодноеЛуговое
(1 row)