Redshift

在 SIMILAR TO 中使用插入符號 (^) 進行模式列表匹配否定,在 Redshift 中使用 ~ 查詢

  • February 10, 2021

我對在 Redshift 中使用 POSIX 正則表達式很陌生。老實說,我認為這種模式必須兼容。

[^A-Za-z0-9\\.\\,-]+

但是,正如我嘗試過這樣的查詢

SELECT * FROM my_table WHERE string_column ~ '[^A-Za-z0-9\\.\\,-]+';

它給了我一個與我喜歡的不匹配的結果,並且似乎將插入符號視為字元文字。我也試過用[^[:alnum:]]沒用。發生這種情況的原因可能是什麼?我是否輸入了錯誤,或者這是 Redshift 或 JDBC 驅動程序中的限制?

我目前正在通過 JetBrains DataGrip(最新版本)執行查詢,並使用最新的 Amazon Redshift JDBC 驅動程序執行它。

我如何使用這種模式的問題是我如何錯誤地嘗試在字元之後添加-字元。基本上,Redshift 確實支持使用插入符號進行模式列表匹配否定。所以這

[^A-Za-z0-9\\.\\,-]+

不應該引起任何問題,但是

[^A-Za-z0-9\\.\\,-\\s]+

可能會導致問題,因為它可能會假設進行範圍查找而不是同時查找-空格字元。

引用自:https://dba.stackexchange.com/questions/285071