【问题标题】:find space in string postgresql在字符串 postgresql 中查找空间
【发布时间】:2013-09-18 17:23:17
【问题描述】:

如何在 postgresql 中查找单词后的空格:

我的数据库中有两个相同的字符串:

string1
  string1 

我正在尝试查找前面有 2 个空格,后面有 1 个空格的那个。

以下是我对其结果使用的一些查询:

SELECT * FROM table WHERE "column" LIKE '__string1_';  -->   *no result*
SELECT * FROM part1 WHERE "column" LIKE '__string1%';

结果:

1)  string1 and xyx

2)  string1 and string2

3)  string1

但我只需要 string1 之后或之前没有字符串。

【问题讨论】:

  • 你为什么不直接使用' string1'
  • 一些测试输入和输出会很好

标签: string postgresql space


【解决方案1】:

可能有几种方法可以做到这一点。有关示例,请参阅PostgreSQL's pattern matching documentation

但是,我使用 % 来查找模式:select * from table where column ILIKE '%string1%'; 将返回任何包含 string1 的内容,包括带有空格的列。

您也可以尝试转义空格:select * from table where column ILIKE '\ \ string1\ ';

或者,更简单的select * from table where column ILIKE ' string1';

我还使用不区分大小写的ILIKE 作为区分大小写的LIKE 的替代,因此在您的查询中大小写无关紧要。

【讨论】:

  • 如果我使用 % 我得到的结果如下: "string1 and string2" 但我只需要 string1 。如果我使用转义空间,我会收到此错误:错误:在“'\\string1\';”处或附近未终止的带引号的字符串对于“string1”,我没有得到任何结果。
  • 你不应该用 % 得到字符串 2,除非你删除 1 并将 % 放在它的位置 - 即 string%。但是,您将返回字符串 12,因为 % 匹配提供的字符串之后或之前的任何内容,具体取决于它是前缀还是后缀。 \ 是一个转义字符,因此它会转义空格并确保将其作为字符而不是空格处理。确保它的\ \ (斜线和斜线之间有一个空格)。
  • 是否有空间的特定用例,您不能只修剪数据以确保在需要时删除空格吗?
猜你喜欢
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多