0

我正在使用 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

4

1 回答 1

1

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

如果每列只有一个单词,则始终可以DECODE用作转换表:

DECODE(Lower(VALUE), 'y', 'TRUE', 'yes', 'TRUE', 'n', 'FALSE', 'no', 'FALSE', VALUE)
于 2019-11-12T22:14:12.307 回答