Regexp_like 检查字符串中的符号
Regexp_like check for symbol in string
如果我想检查字符串是否包含 @
符号,我可以写类似
的东西
REGEXP_LIKE(source_column,'@')
或
REGEXP_LIKE(source_column, '.*@.*')
这两种形式有什么区别?
为什么即使字符串具有 @
以外的其他符号,REGEXP_LIKE(source_column,'@')
returns 仍为真?例如它匹配 mail@mail.com
和 12@
自然 '@'
对我来说看起来 完全 字符串匹配,而 '.*@.*'
我读作 'any string with that symbol'.
这三个功能完全相同,如果 @
符号之前或之后有任意数量的字符,则 return 为真:
REGEXP_LIKE(source_column,'@')
REGEXP_LIKE(source_column,'.*@.*')
REGEXP_LIKE(source_column,'^.*@.*$', 'n')
(如果你有多行数据,最后一个例子需要'n'
匹配参数,否则.
通配符将无法匹配换行符,匹配将失败.)
如果您想要精确匹配,请查找紧接符号前后的字符串开头 (^
) 和字符串结尾 ($
):
REGEXP_LIKE(source_column,'^@$')
如果我想检查字符串是否包含 @
符号,我可以写类似
REGEXP_LIKE(source_column,'@')
或
REGEXP_LIKE(source_column, '.*@.*')
这两种形式有什么区别?
为什么即使字符串具有 @
以外的其他符号,REGEXP_LIKE(source_column,'@')
returns 仍为真?例如它匹配 mail@mail.com
和 12@
自然 '@'
对我来说看起来 完全 字符串匹配,而 '.*@.*'
我读作 'any string with that symbol'.
这三个功能完全相同,如果 @
符号之前或之后有任意数量的字符,则 return 为真:
REGEXP_LIKE(source_column,'@')
REGEXP_LIKE(source_column,'.*@.*')
REGEXP_LIKE(source_column,'^.*@.*$', 'n')
(如果你有多行数据,最后一个例子需要'n'
匹配参数,否则.
通配符将无法匹配换行符,匹配将失败.)
如果您想要精确匹配,请查找紧接符号前后的字符串开头 (^
) 和字符串结尾 ($
):
REGEXP_LIKE(source_column,'^@$')