如果需要用like来匹配字符串中的特殊字符,eg.?, \ ,/。需要对其做转义,否则会当做正则表达被处理。
<span style="color:#000000"><code>hive> <span style="color:#000088 !important">select</span> channel <span style="color:#000088 !important">from</span> test;
a?bc
a_bc
a.bc
hive> <span style="color:#000088 !important">select</span> channel <span style="color:#000088 !important">from</span> test <span style="color:#000088 !important">where</span> channel <span style="color:#000088 !important">like</span> <span style="color:#880000 !important"><em>'%\?%'</em></span>
a?bc
hive> <span style="color:#000088 !important">select</span> channel <span style="color:#000088 !important">from</span> test <span style="color:#000088 !important">where</span> channel <span style="color:#000088 !important">like</span> <span style="color:#880000 !important"><em>'%\_%'</em></span></code></span>
正则表达式需要转义的特殊字符
- $ :匹配输入字符串结尾的位置。若要匹配 $ 字符本身,请使用 \$。
- ( ) :标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \) 。
- *:零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。
- +: 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。
- . :匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \.。
- [ ] :标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 。
- ?: 零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。
- \ :将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配 (。
- / :表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。
- ^ :匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。
- { }: 标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。
- | :指出在两个项之间进行选择。若要匹配 | ,请使用\|。