Oracle 类Regexp_检查字符串中的符号

Oracle 类Regexp_检查字符串中的符号,oracle,regexp-like,Oracle,Regexp Like,如果我想检查字符串是否包含@符号,我可以这样写 REGEXP_LIKE(source_column,'@') 或 这两种形式有什么区别? 为什么REGEXP\u LIKE(source_column,'@')即使字符串中有@以外的其他符号也返回true?例如,它与mail@mail.com和12@ 自然地,“@”对我来说就像是精确的字符串匹配,而“.*.*.我读作“带有该符号的任何字符串”。这三个字符串的功能完全相同,如果@符号前面或后面有任何数量的字符,则返回true: REGEXP_LIK

如果我想检查字符串是否包含
@
符号,我可以这样写

REGEXP_LIKE(source_column,'@')

这两种形式有什么区别? 为什么
REGEXP\u LIKE(source_column,'@')
即使字符串中有
@
以外的其他符号也返回true?例如,它与
mail@mail.com
12@


自然地,
“@”
对我来说就像是精确的字符串匹配,而
“.*.*.
我读作“带有该符号的任何字符串”。

这三个字符串的功能完全相同,如果
@
符号前面或后面有任何数量的字符,则返回true:

REGEXP_LIKE(source_column,'@')
REGEXP_LIKE(source_column,'.*@.*')
REGEXP_LIKE(source_column,'^.*@.*$', 'n')
(如果有多行数据,则最后一个示例需要
'n'
匹配参数,否则
通配符将不匹配换行符,匹配将失败。)

如果需要精确匹配,请查找符号前后的字符串开头(
^
)和字符串结尾(
$
):

REGEXP_LIKE(source_column,'^@$')

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

REGEXP_LIKE(source_column,'@')
REGEXP_LIKE(source_column,'.*@.*')
REGEXP_LIKE(source_column,'^.*@.*$', 'n')
(如果有多行数据,则最后一个示例需要
'n'
匹配参数,否则
通配符将不匹配换行符,匹配将失败。)

如果需要精确匹配,请查找符号前后的字符串开头(
^
)和字符串结尾(
$
):

REGEXP_LIKE(source_column,'^@$')