0

如果我想检查该字符串是否包含@符号,我可以写类似

REGEXP_LIKE(source_column,'@')

或者

REGEXP_LIKE(source_column, '.*@.*')

这两种形式有什么区别?为什么REGEXP_LIKE(source_column,'@')即使 string 有其他符号而不返回 true @?例如它与mail@mail.comand匹配12@

对我来说自然'@'看起来像是完全匹配的字符串,'.*@.*'我读作“任何带有该符号的字符串”。

4

1 回答 1

3

这三个功能相同,如果@符号前后有任意数量的字符,则返回 true:

REGEXP_LIKE(source_column,'@')
REGEXP_LIKE(source_column,'.*@.*')
REGEXP_LIKE(source_column,'^.*@.*$', 'n')

'n'如果您有多行数据,则需要最后一个示例的 match 参数,否则.通配符将不匹配换行符并且匹配将失败。)

如果您想要完全匹配,则在符号之前和之后查找字符串开头 ( ^) 和字符串结尾 ( ):$

REGEXP_LIKE(source_column,'^@$')
于 2016-04-13T12:55:02.357 回答