diff --git a/be/src/exprs/string_functions.cpp b/be/src/exprs/string_functions.cpp index 32a4261e41..2f3abd2e8e 100644 --- a/be/src/exprs/string_functions.cpp +++ b/be/src/exprs/string_functions.cpp @@ -50,10 +50,10 @@ size_t get_char_len(const StringVal& str, std::vector* str_index) { // - [optional] len. No len indicates longest substr possible StringVal StringFunctions::substring(FunctionContext* context, const StringVal& str, const IntVal& pos, const IntVal& len) { - if (str.is_null || pos.is_null || len.is_null || pos.val > str.len) { + if (str.is_null || pos.is_null || len.is_null) { return StringVal::null(); } - if (len.val <= 0 || str.len == 0 || pos.val == 0) { + if (len.val <= 0 || str.len == 0 || pos.val == 0 || pos.val > str.len) { return StringVal(); }