code: func builtinConvert(args []types.Datum, _ context.Context) (d types.Datum, err error) {
  	// Casting nil to any type returns nil
  	if args[0].Kind() != types.KindString {
  		return d, nil
  	}
  
  	str := args[0].GetString()
  	Charset := args[1].GetString()
  
  	if strings.ToLower(Charset) == "ascii" {
  		d.SetString(str)
  		return d, nil
  	} else if strings.ToLower(Charset) == "utf8mb4" {
  		d.SetString(str)
  		return d, nil
  	}
  
  	encoding, _ := charset.Lookup(Charset)
  	if encoding == nil {
  		return d, errors.Errorf("unknown encoding: %s", Charset)
  	}
  
  	target, _, err := transform.String(encoding.NewDecoder(), str)
  	if err != nil {
  		log.Printf("Convert %s to %s with error: %v", str, Charset, err)
  		return d, errors.Trace(err)
  	}
  	d.SetString(target)
  	return d, nil
  }
docs: // See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert