【问题标题】:How to get only Cyrillic characters from a PostgreSQL table?如何从 PostgreSQL 表中只获取西里尔字符?
【发布时间】:2018-04-19 08:46:18
【问题描述】:

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

这似乎可行,但除了西里尔字母值之外,我还得到了一些拉丁字母值。这怎么可能?我认为,即使我正在写拉丁字母,如果我使用带有西里尔字符的键盘,其中一些可能会被读取为西里尔字母。

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

谢谢

【问题讨论】:

    标签: sql postgresql unicode


    【解决方案1】:

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

    文档:

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

    文档:Using regexps in PostgreSQL

    【讨论】:

      【解决方案2】:

      使用相同的掩码:

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

      【讨论】:

      • 现在好一点了,但问题是当我有一个包含拉丁(或数字)和西里尔字符的字符串时,我会得到西里尔字母的部分。我想要的是整个字符串。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多