code: func (b *builtinSubstringBinary2ArgsSig) evalString(row chunk.Row) (string, bool, error) {
  	str, isNull, err := b.args[0].EvalString(b.ctx, row)
  	if isNull || err != nil {
  		return "", true, err
  	}
  	pos, isNull, err := b.args[1].EvalInt(b.ctx, row)
  	if isNull || err != nil {
  		return "", true, err
  	}
  	length := int64(len(str))
  	if pos < 0 {
  		pos += length
  	} else {
  		pos--
  	}
  	if pos > length || pos < 0 {
  		pos = length
  	}
  	return str[pos:], false, nil
  }
docs: // evalString evals SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR() is a synonym for SUBSTRING().
  // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substr