使用 POSIX 扩展正则表达式查找和替换多个字符串

Find and Replace multiple strings using a POSIX extended regular expression

我正在使用 Snowflake 数据库,希望找到一个可以查找和替换多个项目的表达式。相关列的行包含 Y、Yes、N、NO 和其他不相关的字符串。因此,在下面的示例中,Y 和 Yes 被替换为 TRUE,N 和 No 被替换为 FALSE,其他字符串保持原样。我在这上面浪费了太多时间。非常感谢任何帮助!

dog
Yes
No
Y
N
Zip

这有效:REGEXP_REPLACE(REGEXP_REPLACE(VALUE,'^y(es)$','TRUE',1,0 ,'i'),'^n(o)$','FALSE',1,0,'i') 但我希望将它简化为一个表达式,因为还有其他需要的替换,我希望避免函数中的许多函数...

这行不通,但我认为它显示了目标:REGEXP_REPLACE(VALUE,'(y(es)?)|(N(o)?)',' $1TRUE$2FALSE',1,0,'i')

https://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extended

你没有过多描述你的数据,但正如 Wiktor Stribiżew 所说,你只能为每个正则表达式替换 一个 字符串(从许多,但到一个) .

如果每列只有一个单词,您可以随时使用 DECODE 作为转换 table:

DECODE(Lower(VALUE), 'y', 'TRUE', 'yes', 'TRUE', 'n', 'FALSE', 'no', 'FALSE', VALUE)