当我的|
子句中包含WHERE
分隔符的字符串时,我遇到了一个非常奇怪的问题。
例如,以下代码返回足够的值:
SELECT DISTINCT name
FROM stats
WHERE name like 'Display |%'
ORDER BY 1 ASC
Display | New
Display | Rerunning
但是当我这样做时(注意|
之后的空格,并且空格后的字符也是相同的效果),由于某种原因,我得到无结果。
SELECT DISTINCT name
FROM stats
WHERE name like 'Display | %'
ORDER BY 1 ASC
也许我应该逃避“|” ?或为什么LIKE子句不起作用?
答案 0 :(得分:1)
您可以使用等效的regular expression来覆盖所有类型的空白区域:
...
WHERE name ~ '^Display\s+\|\s*'
...
\s+
..一个或多个空格字符([[:space:]]
为class-shorthand)
\s*
.. 0或更多相同的
|
必须转义为\|
,因为它在正则表达式中具有特殊含义(但不是LIKE
模式中的)。
以上链接指向Postgres手册。 The manual page for Redshift.